Конвертируйте метку времени эпохи Unix в DateTime и обратно - PullRequest
0 голосов
/ 25 марта 2019

Я конвертирую дату и время 19.03.2009 14:23:00 в метку времени эпохи Unix, а затем обратно в объект DateTime.Преобразование завершилось успешно, за исключением года, в результате которого вместо 2019 года получилось 0050. Я не знаю, что я сделал неправильно в процессе преобразования, вернувшись к DateTime.Код следующий:

DateTime targetDateTime = new DateTime(2019, 03, 19, 14, 23, 00, DateTimeKind.Local);
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);    
long unixDateTime = (long)(targetDateTime.ToUniversalTime() - epoch).TotalSeconds;
TimeSpan resultingTimeSpan = TimeSpan.FromSeconds(unixDateTime);
DateTime localDateTime = new 
DateTime(resultingTimeSpan.Ticks).ToLocalTime();

Результат localDateTime.Year: 0050 Пожалуйста, помогите.

1 Ответ

0 голосов
/ 25 марта 2019

Если ваша цель - получить тики из значения даты и времени, а затем преобразовать его обратно в исходное значение даты и времени, вы можете использовать следующий код

DateTime targetDateTime = new DateTime(2019, 03, 19, 14, 23, 00, DateTimeKind.Local);

var totalTicks = targetDateTime.ToUniversalTime().Ticks;

DateTime localDateTime = new DateTime(totalTicks, DateTimeKind.Utc).ToLocalTime();

Если вы все еще хотите получить значение тиков относительно времени эпохи, тогда этот код может помочь

DateTime targetDateTime = new DateTime(2019, 03, 19, 14, 23, 00, DateTimeKind.Local);
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
long unixDateTime = (targetDateTime.ToUniversalTime() - epoch).Ticks;

 //Add the ticks back to the epoch
 var utcTime = epoch.AddTicks(unixDateTime);
 DateTime localDateTime = utcTime.ToLocalTime();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...