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