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

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 без учета часового пояса:
Код:
Под вопросом
Помогите пожалуйста
 
Последнее редактирование:

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Первое и третье наоборот, нет?
Название второго сниппета вообще содержанию не соответствует.
Так и не понял что нужно
 

Manless

Client
Регистрация
09.01.2014
Сообщения
186
Благодарностей
33
Баллы
28
Первое и третье наоборот, нет?
Название второго сниппета вообще содержанию не соответствует.
Так и не понял что нужно
извиняюсь сильно, по запарке не так написал. исправил.
вопрос осноыной как получить unixtime и datetime с учетом часового пояса. и как перевести datetime в unixtime с учетом часового пояса
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Datetime с учетом часового пояса

Код:
return DateTime.Now;
Unixtime с учетом часового пояса

Код:
int unixTime = (int)(DateTime.Now - new DateTime(1970,1,1)).TotalSeconds;
return unixTime;
 

Manless

Client
Регистрация
09.01.2014
Сообщения
186
Благодарностей
33
Баллы
28
rostonix, тогда не понимаю ничего:
когда я использую datetime.utcnow, то выдает именно ту дату и время, которая у меня на компе ( московское время, часовой пояс уже выставлен +3 часа )
а если я эту дату и время попытаюсь преобразовать в unixtime с помощью кода в начале темы, то unixtime будет получен +3 часа, т. е. часовой пояс становится в итоге +6 часов
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113

Manless

Client
Регистрация
09.01.2014
Сообщения
186
Благодарностей
33
Баллы
28
Действительно если получать Текущую дату в обычном формате с помощью return DateTime.Now, то получаем точь в точь дату как на компе.
А если return DateTime.UtcNow, то получаем дату +0 часовой пояс

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

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

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

Вложения

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113

Manless

Client
Регистрация
09.01.2014
Сообщения
186
Благодарностей
33
Баллы
28
Да вопрос как правильно конвертировать: Datetime-Unixtime-Datetime, чтобы получить то время, которое в данный момент будет на любом компьютере в любом часовом поясе.

По любому же есть решение:-)
 

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113
Поправьте последний сниппет:
Код:
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

Manless

Client
Регистрация
09.01.2014
Сообщения
186
Благодарностей
33
Баллы
28
А зачем в последнем сниппете дополнительная конвертация?
Спасибо большое!!! Я не особо силен в C#. Но теперь понял, что последнее .ToLocalTime() или .ToUniversalTime() либо прибавляли +несколько часов в зависимости от зоны, либо считали от +0
 
  • Спасибо
Реакции: zortexx

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