我想将日期作为数字存储在表格中。我知道怎么做,但我不知道怎么回去。如何将长变量强制转换为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。我不介意使用哪种技术。我只想有一种方法可以来回转换。
答案 0 :(得分:83)
答案 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();