Как я могу преобразовать DateTime в int? - PullRequest
40 голосов
/ 26 апреля 2011

У меня есть следующий DateTime 25.04.2011 17:12:13 и попробовал это преобразовать в int

 int result = dateDate.Year * 10000 + dateDate.Month * 100 
             + dateDate.Day + dateDate.Hour + dateDate.Minute + dateDate.Second;

Но он все еще получает 2011425 Как я могу получить время?

Ответы [ 5 ]

60 голосов
/ 26 апреля 2011
dateDate.Ticks

должно дать вам то, что вы ищете.

Значение этого свойства представляет количество интервалов в 100 наносекунд, прошедших с 12:00:00 до полуночи января1, 0001, который представляет DateTime.MinValue.Он не включает количество тиков, которые относятся к високосным секундам.

DateTime.Ticks


Если вы действительно ищетеВремя эпохи Linux (в секундах с 1 января 1970 года), принятый ответ на этот вопрос должен быть актуальным.


Но если вы на самом деле пытаетесь «сжать» строкупредставление даты в int, вы должны спросить себя, почему вы просто не храните ее как строку для начала.Если вы все еще хотите сделать это после этого, Stecya ответ правильный.Имейте в виду, что он не будет вписываться в int, вам придется использовать long.

46 голосов
/ 26 апреля 2011
5 голосов
/ 26 апреля 2011

Я думаю, что вы хотите (это не будет соответствовать int, однако, вам нужно будет сохранить его как long):

long result = dateDate.Year * 10000000000 + dateDate.Month * 100000000 + dateDate.Day * 1000000 + dateDate.Hour * 10000 + dateDate.Minute * 100 + dateDate.Second;

В качестве альтернативы, хранение тиков - лучшая идея.

2 голосов
/ 26 апреля 2011

Хотите ли вы int, который выглядит как 20110425171213?В этом случае вам лучше использовать ToString с соответствующим форматом (что-то вроде 'yyyyMMddHHmmss'), а затем приводить строку к целому числу (или к длинному беззнаковому типу int, так как это будет более 32 бит).

Если вам нужно фактическое числовое значение (количество секунд с 0 года), тогда это совсем другое вычисление, например,

result = second
result += minute * 60
result += hour * 60 * 60
result += day * 60 * 60 * 24 

и т. Д.

Но вам лучше будет использовать тиков.

0 голосов
/ 11 июля 2018
string date = DateTime.Now.ToString();

date = date.Replace("/", "");
date = date.Replace(":", "");
date = date.Replace(" ", "");
date = date.Replace("AM", "");
date = date.Replace("PM", "");            
return date;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...