将日期序列化为JSON似乎会改变一小时后的日期

时间:2015-08-13 01:13:26

标签: sql-server json asp.net-web-api odata odata-v4

我试图理解为什么当我以JSON格式查看时,我的MSSQL服务器中存储的日期会被改变一小时。

这是存储在MSSQL中的日期时间

  

2015-08-12 00:00:00.000

这是Visual Studio中的调试模式,显示日期"出现"从数据库中正确检索。

  

{8/12/2015 12:00:00 AM}

这是JSON输出 - 日期提前一小时!我看到json时区是-6,数据库时区似乎没有,但我的web api配置中没有任何特殊设置。我真的不明白这里发生了什么。感谢任何帮助。

  

" 2015-08-11T23:00:00-06:00",

编辑:我的图片没有显示,所以我编辑了以文本格式显示日期 - 希望这是好的。

1 个答案:

答案 0 :(得分:0)

当转移到OData V4(从早期版本)时,我们遇到的第一个“hickups”之一是V4 支持'DateTime'而是'DateTimeOffset'。在.Net术语中,我们将从“假定为运行它的服务器的语言环境时区的日期”转移到“DateTimeOffset”,该日期明确包含时区信息本身。

OWin将根据您的主题文化信息发出DateTimeOffset。然后,您的解决方案将确保在“DateTime”和“DateTimeOffset”(分别为DB / EF和OWin)之间进行转换时不依赖于本地线程的区域设置,但强制将其视为UTC。