如何将DateTime转换为int?

时间:2011-04-26 10:17:21

标签: 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;

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

5 个答案:

答案 0 :(得分:57)

dateDate.Ticks

应该给你你想要的东西。

  

此属性的值表示   100纳秒间隔的数量   已经过了12:00:00   0001年1月1日午夜   表示DateTime.MinValue。确实如此   不包括那些滴答数   可归因于闰秒。

     

DateTime.Ticks


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


但是如果你真的想把日期的字符串表示“压缩”成int,你应该问问自己为什么不把它作为一个字符串存储起来。如果您仍然希望在此之后执行此操作,Stecya's answer是正确的。请记住,它不适合int,你必须使用long。

答案 1 :(得分:46)

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

请参阅Custom Date and Time Format Strings

答案 2 :(得分:5)

我认为你想要的(但这不适合int,你需要将它存储为long):

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

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

答案 3 :(得分:2)

你想要一个看起来像20110425171213的'int'吗?在这种情况下,您最好使用适当的格式(类似于'yyyyMMddHHmmss')将ToString更好,然后将字符串转换为整数(或者长整数,无符号整数,因为它将超过32位)。

如果你想要一个实际的数值(自0年以来的秒数),那么这是一个非常不同的计算,例如:

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

等。

但你最好不要使用Ticks。

答案 4 :(得分:0)

string date = DateTime.Now.ToString();

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