如何解决将DateTime转换为long,反之亦然
| 我想将日期以数字形式存储在表中。我知道该怎么做,但我不知道该怎么回去。如何将长变量转换为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。我不介意使用哪种技术。我只想有一种可以来回转换的方式。
解决方法
从DateTime到以下时间:
long DateTime.Ticks
从long到DateTime:
new DateTime(long)
, 使用对long t = now.Ticks
和DateTime Today = new DateTime(t)
, 从长到日期时间:new DateTime(long ticks)
从DateTime到long:DateTime.Ticks
, 由于您使用的是ToFileTime
,因此您将需要使用FromFileTime进行其他操作。但请注意:
通常,FromFileTime方法
恢复的DateTime值是
由ToFileTime方法保存。
但是,两个值可能不同
在以下条件下:
如果DateTime值的序列化和反序列化发生在不同的时区中。对于
例如,如果DateTime值带有
时间为下午12:30在美国东部
时区被序列化,然后
在美国太平洋时间反序列化
区域,原始值为下午12:30。
调整为上午9:30反射
两者之间的时差
区域。
如果序列化的DateTime值表示无效时间
在当地时区。在这种情况下,
ToFileTime方法调整
恢复DateTime值,以便它
代表当地的有效时间
时区。
如果您不在乎存储DateTime的哪个long
表示形式,则可以按照其他建议使用Ticks
(根据您的要求,Ticks可能更可取,因为ToFileTime
返回的值似乎是在Windows上下文中文件系统API)。
, 有几种可能(请注意,这些长值与Unix时代不同。
对于您的示例(反转ToFileTime()
),只需使用DateTime.FromFileTime(t)
。
, 有一个DateTime构造函数需要很长时间。
DateTime today = new DateTime(t); // where t represents long format of dateTime
, long dateTime = DateTime.Now.Ticks;
Console.WriteLine(dateTime);
Console.WriteLine(new DateTime(dateTime));
Console.ReadKey();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。