如果我运行像一个片段:UtcNow和现在是相同的日期时间?他们知道他们不同吗?
bool areTheyTheSame = DateTime.UtcNow == DateTime.Now
我究竟会得到什么? DateTime返回是否知道它的时区,以便我可以比较?
我的具体问题是,我试图构建一个类似缓存的API。如果需要一个DateTime AbsoluteExpiration,是否必须强制我的API的用户知道是否给我一个UTC时间或基于时区的时间?
[编辑]这太问题是我的问题,也是极其相关:Cache.Add absolute expiration - UTC based or not?
[编辑]只是为了澄清对未来的读者,在DateTimeKind是什么,是不同的。未定义的DateTimeKind常常是一个问题,例如,当您从数据库中取出某个数据库时,会出现这种问题。设置DateTimeKind在DateTime构造...
[编辑] JonSkeet写了一个可爱的博客文章,谴责这种行为,并提供了解决方案:http://noda-time.blogspot.co.uk/2011/08/what-wrong-with-datetime-anyway.html
我没有尝试,但主要是因为我很惊讶,这个问题是不是已经SO并认为这将是对人有益的。也许有点懒惰,但我发誓,主要是好心! ;) – 2010-07-12 14:51:46
我想看到的关键测试可能是,“Console.WriteLine(utcNow.ToUniversalTime()== utcNow)”的结果;“... – 2010-07-12 14:52:59
+1。另外,还有一个不同的DateTimeKind。有另一个方向的'ToLocalTime()'。小心'DateTimeKind.Undefined',这些时间总是被转换('ToUniversalTime'将它们当作本地时间,'ToLocalTime'视为UTC)。 – 2010-07-12 14:57:28