将DateTime转换为long,反之亦然

时间:2011-05-27 18:15:46

标签: c# .net datetime

我想将日期作为数字存储在表格中。我知道怎么做,但我不知道怎么回去。如何将长变量强制转换为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 个答案:

答案 0 :(得分:83)

从DateTime延长:

long DateTime.Ticks

从长日期到日期时间:

new DateTime(long)

答案 1 :(得分:11)

答案 2 :(得分:9)

从long到DateTime:new DateTime(long ticks)

从DateTime到long:DateTime.Ticks

答案 3 :(得分:5)

由于您使用的是ToFileTime,因此您需要使用FromFileTime来反过来。但是note

  

通常,FromFileTime方法   恢复原来的DateTime值   由ToFileTime方法保存。   但是,这两个值可能不同   在以下条件下:

     

如果DateTime值的序列化和反序列化发生在不同的时区。对于   例如,如果DateTime值带有   下午12:30在美国东部   时区被序列化,然后   在美国太平洋时间反序列化   区域,原值12:30   调整到上午9:30反射   这两个时间的区别   区。

     

如果序列化的DateTime值表示无效时间   在当地时区。在这种情况下,   ToFileTime方法调整   恢复DateTime值以便它   代表当地的有效时间   时区。

如果您不关心存储日期时间的long表示,您可以像其他人建议的那样使用Ticks蜱可能更好,具体取决于您的要求,因为ToFileTime返回的值似乎是在Windows文件系统API的上下文中。)

答案 4 :(得分:3)

有几种可能性(注意那些长值与Unix时代不同。

对于您的示例(反转ToFileTime()),只需使用DateTime.FromFileTime(t)

答案 5 :(得分:0)

有一个DateTime构造函数需要很长的时间。

DateTime today = new DateTime(t); // where t represents long format of dateTime 

答案 6 :(得分:0)

   long dateTime = DateTime.Now.Ticks;
   Console.WriteLine(dateTime);
   Console.WriteLine(new DateTime(dateTime));
   Console.ReadKey();