datetime - 为什么 RavenDB 在没有 UTC 标记的情况下存储我的日期时间?

标签 datetime ravendb asp.net-web-api

我有一个 C# 对象,我将其保存到 RavenRB(版本 1.0.960),DateTime 是通用的 - 但 RavenDB 将其存储为本地时间 "Time": "2012-06-12T13:07: 39.0000000"

然后,当我使用 session.Query().Where()... 并传入通用时间时,我的对象不会返回...因为比较 12 小时(我是 UTC+1200)不正常.

我做错了什么?

[编辑]

好的 - 我明白问题出在哪里了。我将我的对象(JSON)发布到服务器,并以 UTC 格式发送它(无时区偏移,“2012-06-12T13:07:39.00Z”) - 我天真地期望 Asp.net Web API将其反序列化为 UTC 类型的对象 - 就像它被发送一样 - 但不是。它被反序列化为本地服务器时间。这意味着当我将对象保存到 Raven 时,Raven 将其存储为本地时间(不带 Z 标识符)。啊!我希望所有日期都以 UTC 格式存储在数据库中(根据最佳实践)!

尝试侵入 Web API 序列化确实很痛苦。 Raven 可以通过一些神奇的标志来拯救我,在保存之前将所有日期转换为 UTC 吗? 我不想在保存之前逐个属性地反射服务器上的对象,查找日期时间并将它们转换为 UTC...EEEW!

建议?

谢谢

最佳答案

通过将 Json.net 作为默认序列化器包含在 ASP.NET MVC 4 RC 中,此问题已得到解决。 像这样配置:

GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.D‌​ateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Utc; 

关于datetime - 为什么 RavenDB 在没有 UTC 标记的情况下存储我的日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10989436/

相关文章:

python - 如何使用 pandas 替换跨列的时间戳

javascript - 如何确定在 Javascript 中是白天还是晚上?

linq - 使用 IRavenQueryable 的 RavenDB 全文搜索字典

c# - RavenDB 在更新一个文档时重建所有索引

LINQ 查询输出键计数值对

MySQL - 导入美国日期时间格式 : "4/18/2017 22:15" 的 CSV 文件

c# - 将多个复杂对象传递给 post/put Web API 方法

c# - 逐步在 ASP.Net Web API 上运行 swashbuckle

c# - RESTful API 命名资源和 Controller 设计

java - Spring 日期格式