4
当我觉得应该返回8.25时,下面的代码返回9.25,我误解了什么?DateTimeOffset TotalHours返回不同的值
(new DateTimeOffset(2014,09,04,08,15,00,new TimeSpan(0,0,0))).Subtract(new DateTimeOffset(2014,09,04,08,15,00,new TimeSpan(0,0,0)).Date).TotalHours
更简单地表现为: - 对
DateTimeOffset start = new DateTimeOffset(2014,09,04,08,15,00,new TimeSpan(0,0,0));
double result = start.Subtract(start.Date).TotalHours
当在时区GMT在Windows 7 PC上运行(调整为夏令时间): -
9月12日的结果= 9.25
12月12日结果= 8.25
谢谢你,让我疯狂一段时间,因为开发和生产都在不同的时区。 – 2014-09-12 13:47:22
我已经在去年多次阅读了Noda时间 - 这可能是通过实体框架5 DateTimeOffset类型询问SQL服务器DateTimeOffset(7)兼容性的正确时机。我是否会一直转换到/来自DateTimeOffsets,从而依靠创建C#代码进化模式,而不是将我的设计意图嵌入到POCO对象中? – 2014-09-12 14:38:24
@Oldfart:恐怕EF不支持直接使用自定义类型。但是你不需要“一直”这样做 - 通常你只是创建一个“好友属性”,我相信(我本人不是EF的人)。查看http://stackoverflow.com/questions/25143549 - 然后你的大部分代码就可以使用Noda Time,并且它将从OffsetDateTime转换为DateTimeOffset以实现持久性。 – 2014-09-12 14:39:57