Unixtime to Datetime и Datetime to Unixtimeс учетом часового пояса

  • Автор темы Автор темы Manless
  • Дата начала Дата начала

Manless

Client
Регистрация
09.01.2014
Сообщения
186
Реакции
33
Баллы
28
Ребят, подскажите как правильно перевести Datetime в Unixtime в зависимости от часового пояса?

Получение Unixtime без учета часового пояса:
Код:
Развернуть Свернуть Копировать
int unixTime = (int)(DateTime.Now - new DateTime(1970,1,1)).TotalSeconds;
return unixTime;

Получение Unixtime из Daterime без учета часового пояса:
Код:
Развернуть Свернуть Копировать
int u_god = Convert.ToInt32(project.Variables["u_god"].Value);
int u_mes = Convert.ToInt32(project.Variables["u_mes"].Value);
int u_den = Convert.ToInt32(project.Variables["u_den"].Value);
int u_chas = Convert.ToInt32(project.Variables["u_chas"].Value);
int u_minut = Convert.ToInt32(project.Variables["u_minut"].Value);
int u_sek = Convert.ToInt32(project.Variables["u_sek"].Value);
int unixTime = (int)(new DateTime(u_god, u_mes, u_den, u_chas, u_minut, u_sek) - new DateTime(1970, 1, 1)).TotalSeconds;
return unixTime;

Получение Unixtime с учетом часового пояса:
Код:
Развернуть Свернуть Копировать
int unixTime = (int)(DateTime.UtcNow - new DateTime(1970,1,1)).TotalSeconds;
return unixTime;

Получение Unixtime из Datetime без учета часового пояса:
Код:
Развернуть Свернуть Копировать
Под вопросом

Помогите пожалуйста
 
Последнее редактирование:
Первое и третье наоборот, нет?
Название второго сниппета вообще содержанию не соответствует.
Так и не понял что нужно
 
Первое и третье наоборот, нет?
Название второго сниппета вообще содержанию не соответствует.
Так и не понял что нужно

извиняюсь сильно, по запарке не так написал. исправил.
вопрос осноыной как получить unixtime и datetime с учетом часового пояса. и как перевести datetime в unixtime с учетом часового пояса
 
Datetime с учетом часового пояса

Код:
Развернуть Свернуть Копировать
return DateTime.Now;

Unixtime с учетом часового пояса

Код:
Развернуть Свернуть Копировать
int unixTime = (int)(DateTime.Now - new DateTime(1970,1,1)).TotalSeconds;
return unixTime;
 
rostonix, тогда не понимаю ничего:
когда я использую datetime.utcnow, то выдает именно ту дату и время, которая у меня на компе ( московское время, часовой пояс уже выставлен +3 часа )
а если я эту дату и время попытаюсь преобразовать в unixtime с помощью кода в начале темы, то unixtime будет получен +3 часа, т. е. часовой пояс становится в итоге +6 часов
 
Действительно если получать Текущую дату в обычном формате с помощью return DateTime.Now, то получаем точь в точь дату как на компе.
А если return DateTime.UtcNow, то получаем дату +0 часовой пояс

Но если получать Unixtime, то ситуация совсем другая :(

rostonix, почему такая чехарда :(
прикреплю файл с шаблоном, чтобы понятней было.

На картинке обратите внимание на vremya и vremya_new
unixtime.PNG
 

Вложения


Да вопрос как правильно конвертировать: Datetime-Unixtime-Datetime, чтобы получить то время, которое в данный момент будет на любом компьютере в любом часовом поясе.

По любому же есть решение:)
 
Поправьте последний сниппет:
Код:
Развернуть Свернуть Копировать
string unixTimeStamp = project.Variables["utime"].Value;
var unixTimeStampd = double.Parse(unixTimeStamp);
System.DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0);
dtDateTime = dtDateTime.AddSeconds(unixTimeStampd);
return dtDateTime;
 
  • Оценить
Реакции: Manless
А зачем в последнем сниппете дополнительная конвертация?
Спасибо большое!!! Я не особо силен в C#. Но теперь понял, что последнее .ToLocalTime() или .ToUniversalTime() либо прибавляли +несколько часов в зависимости от зоны, либо считали от +0
 
  • Оценить
Реакции: zortexx

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)