Конвертировать DateTime в long, а также наоборот - PullRequest
34 голосов
/ 27 мая 2011

Я хочу хранить даты в виде чисел в таблице. Я знаю, как это сделать, но я не знаю, как вернуться. Как я могу привести длинную переменную к ToDateTime.

DateTime now = DateTime.Now;
long t = now.ToFileTime();
DateTime today = t.ToDateTime;  // I am looking for something like this line. This Method does not exist

Я знаю, что есть много способов конвертировать DateTime в long. Я не против, какую технику использовать. Я просто хочу, чтобы у меня был способ конвертировать туда и обратно.

Ответы [ 7 ]

84 голосов
/ 27 мая 2011

Для длинных от DateTime:

long DateTime.Ticks

Для DateTime от long:

new DateTime(long)

11 голосов
/ 27 мая 2011

используйте пару long t = now.Ticks и DateTime Today = new DateTime(t)

9 голосов
/ 27 мая 2011

От long до DateTime: new DateTime(long ticks)

От DateTime до long: DateTime.Ticks

5 голосов
/ 27 мая 2011

Поскольку вы используете ToFileTime, вам нужно будет использовать FromFileTime , чтобы пойти другим путем. Но примечание :

Обычно метод FromFileTime восстанавливает значение DateTime, которое было сохраняется методом ToFileTime. Тем не менее, эти два значения могут отличаться при следующих условиях:

Если сериализация и десериализация значения DateTime происходят в разных часовых поясах. За Например, если значение DateTime с время 12:30 вечера в восточной части США Часовой пояс сериализуется, а затем десериализовано в США по тихоокеанскому времени зона, первоначальное значение 12:30 вечера корректируется до 9:30 утра отражать разница между двумя временами зоны.

Если сериализованное значение DateTime представляет недопустимое время в местном часовом поясе. В этом случае, метод ToFileTime корректирует восстановил значение DateTime так, чтобы оно представляет действительное время в местном часовой пояс.

Если вам все равно, какое long представление DateTime хранится, вы можете использовать Ticks, как предлагали другие ( Тики, вероятно, предпочтительнее , в зависимости от ваших требований, поскольку значение возвращается ToFileTime, похоже, в контексте API файловой системы Windows).

3 голосов
/ 27 мая 2011

Существует несколько возможностей (обратите внимание, что эти длинные значения не совпадают с эпохой Unix.

Для вашего примера (для обратного ToFileTime()) просто используйте DateTime.FromFileTime(t).

0 голосов
/ 19 сентября 2018
   long dateTime = DateTime.Now.Ticks;
   Console.WriteLine(dateTime);
   Console.WriteLine(new DateTime(dateTime));
   Console.ReadKey();
0 голосов
/ 27 мая 2011

Существует конструктор DateTime, который занимает много времени.

DateTime today = new DateTime(t); // where t represents long format of dateTime 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...