Конвертировать Long в DateTime дать ложное значение - PullRequest
0 голосов
/ 23 сентября 2019

Я только что попытался преобразовать дату, хранящуюся как длинное значение, в DateTime, но он дает мне дату {2/01/0001 7:35:22 PM}, тогда как она должна быть {23/09/2019 4:30:23} (GMT +10)

Вот длинное значение1569220232761 создано при инициализации объекта.Вот код, который возвращает 2/01/0001

SeshStart = new DateTime(CurrentSession.startDate, DateTimeKind.Local);

с CurrentSession.startDate равным 1569220232761.

Ответы [ 2 ]

4 голосов
/ 23 сентября 2019

То, что у вас есть, это Время Unix , а не число Тиков (что будет на порядки больше)

, т. Е.637,048,098,230,000,000 применяется к 1,569,220,232,761

Время Unix

Время Unix (также известное как время Epoch, время POSIX, секундыпоскольку Epoch, или UNIX Epoch time) - это система для описания момента времени.Это количество секунд, прошедших с начала эпохи Unix, то есть время 00:00:00 UTC 1 января 1970 года,

DateTime (Int64)

Инициализирует новый экземпляр структуры DateTime с указанным числом тиков.

Попробуйте что-то вроде этого

public static DateTime UnixTimeToDateTime(long unixtime)
{
   var dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
   return dtDateTime.AddMilliseconds(unixtime).ToLocalTime();
}
2 голосов
/ 23 сентября 2019

Поскольку вы звоните DateTime(Int64, DateTimeKind) перегрузка и как указано;

Параметры

ticks

Int64

Дата и время, выраженные в количестве 100-наносекундных интервалов, прошедших с 1 января 0001 года в 00: 00: 00.000 по григорианскому календарю .

Поскольку Ticks, 1569220232761 равно Monday, 23 September 2019 06:30:32.761 GTM, и вы можете точно рассчитать свое значение, как описано в Как преобразовать метку времени Unix в DateTime и наоборот? question.

Также следует помнить, что в версии .NET 4.6 представлены два метода: DateTimeOffset.FromUnixTimeSeconds(Int64) и DateTimeOffset.ToUnixTimeSeconds.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...