it-roy-ru.com

Как я могу преобразовать DateTime в int?

У меня есть следующий DateTime 25/04/2011 5:12:13 PM И попытался преобразовать его в int

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

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

36
someguy
dateDate.Ticks

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

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

DateTime.Ticks


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


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

55
Alex J
long n = long.Parse(date.ToString("yyyyMMddHHmmss"));

см. Пользовательские строки формата даты и времени

44
Stecya

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

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

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

5
Jackson Pope

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

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

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

и т.п. 

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

2
Unsliced
string date = DateTime.Now.ToString();

date = date.Replace("/", "");
date = date.Replace(":", "");
date = date.Replace(" ", "");
date = date.Replace("AM", "");
date = date.Replace("PM", "");            
return date;
0
l1k0pl4st1