我有我保存到RavenRB(建1.0.960)一個C#對象,日期時間是普遍的 - 但RavenDB其存儲爲本地時間"Time": "2012-06-12T13:07:39.0000000"
爲什麼RavenDB存儲沒有UTC標記的DateTime?
然後,當我使用session.Query()在哪裏。 ()...並在世界時間傳遞,我的對象不會返回...因爲比較它12小時(Im UTC + 1200)出錯。
我在做什麼錯?
[編輯]
好的 - 我看到了什麼問題。我將我的對象(JSON)發佈到服務器,並以UTC格式(無時區偏移量,「2012-06-12T13:07:39.00Z」)發送 - 我天真地期望Asp.net Web API將它反序列化爲UTC類型的對象 - 就像它發送的一樣 - 但不是。它被DESERIALIZED到本地服務器時間。這意味着當我將對象保存到Raven時,Raven會將其存儲爲本地時間(不含Z標識符)。哎呀!我希望我的所有日期都以UTC存儲在數據庫中(按照最佳實踐)!
試圖侵入Web API序列化是一個真正的痛苦。 Can Raven可以通過一些魔術標誌來保存我,這些標誌將在保存之前將所有日期轉換爲UTC? 我不想要在服務器上反射我的對象,按屬性查找DateTimes,並將它們轉換爲UTC,然後保存... EEEW!
對此提出建議?
感謝
我已經打了一個與服務器時區類似的疑難雜症。 –
我假設你的'解決方案'是一個討厭的黑客,你不想公開談論它?我知道我的是( - ; – Adam
)好的,我在週末升級到了最新版本的ASP.NET MVC/WebAPI(RC),現在我可以配置所有的日期,以便序列化到UTC 'GlobalConfiguration。配置.Formatters.JsonFormatter.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Utc;' 所有好! – Adam