没有附加到
DateTime对象的隐式时区。如果
ToUniversalTime()在其上运行,它将使用运行代码的上下文的时区。
例如,如果我
DateTime从1970年1月1日这个时代创建一个,那么
DateTime无论我在世界的哪个角落,它都给我相同的对象。
如果我
ToUniversalTime()在格林威治中运行代码时在其上运行,那么我得到的时间是相同的。如果我在温哥华居住时这样做,那么我得到的偏移
DateTime对象为-8小时。
这就是为什么在需要进行任何类型的日期转换或本地化时,将与时间相关的信息作为UTC时间存储在数据库中很重要的原因。考虑您的代码库是否已在另一个时区移至服务器设施;)
编辑:Joel的答案的注释-
DateTime默认情况下,对象的类型为
DateTimeKind.Local。如果您解析日期并将其设置为
DateTimeKind.Utc,则不
ToUniversalTime()执行任何转换。
这是有关“用日期时间编码的最佳做法”的文章,以及有关用.Net转换日期时间的文章。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)