如何将DateTime转换为int?

som*_*guy 41 c# datetime

我有以下DateTime 4/25/2011 5:12:13 PM并尝试将其转换为int

 int result = dateDate.Year * 10000 + dateDate.Month * 100 
             + dateDate.Day + dateDate.Hour + dateDate.Minute + dateDate.Second;
Run Code Online (Sandbox Code Playgroud)

但它仍然得到2011425我怎么能得到时间呢?

Ale*_*x J 60

dateDate.Ticks
Run Code Online (Sandbox Code Playgroud)

应该给你你想要的东西.

此属性的值表示自0001年1月1日午夜12:00:00起经过的100纳秒间隔的数量,表示DateTime.MinValue.它不包括可归因于闰秒的刻度数.

DateTime.Ticks


如果您真的在寻找Linux Epoch时间(1970年1月1日以来的秒数),那么这个问题的接受答案应该是相关的.


但是如果你真的试图将日期的字符串表示"压缩"成int,你应该问问自己为什么不把它作为一个字符串存储起来.如果你还是想在那之后做,那么Stecya的回答是正确的.请记住,它不适合int,你必须使用很长的.

  • 为什么不直接使用 DateTime 本身作为字典键? (2认同)

Ste*_*cya 49

long n = long.Parse(date.ToString("yyyyMMddHHmmss"));
Run Code Online (Sandbox Code Playgroud)

请参阅自定义日期和时间格式字符串

  • 哇!有时c#让我想知道我是否必须自己做任何事情! (4认同)
  • 很高兴知道这是mm代表分钟和MM代表月份所以它应该是:Int64 n = Int64.Parse(date.ToString("yyyyMMddhhmmss")); (2认同)
  • 实际上,你想要"yyyyMMddHHmmss".(例如http://stackoverflow.com/a/3025374/530545)案件很重要; 使用12小时的时钟会让你重复. (2认同)

Jac*_*ope 5

我想你想要(int虽然这不适合,你需要将它存储为a long):

long result = dateDate.Year * 10000000000 + dateDate.Month * 100000000 + dateDate.Day * 1000000 + dateDate.Hour * 10000 + dateDate.Minute * 100 + dateDate.Second;
Run Code Online (Sandbox Code Playgroud)

或者,存储刻度线是一个更好的主意.