0

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

这是存储在 MSSQL 中的 Datetime 日期

2015-08-12 00:00:00.000

这是 Visual Studio 中的调试模式,显示日期“似乎”可以从数据库中正确检索。

{2015 年 8 月 12 日上午 12:00:00}

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

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

编辑:我的照片没有显示,所以我编辑以文本格式显示日期 - 希望没关系。

4

1 回答 1

0

当迁移到 OData V4(从早期版本)时,我们遇到的第一个“小问题”是 V4 不支持“DateTime”,但支持“DateTimeOffset”。在 .Net 术语中,我们正在从“假定在运行它的服务器的区域设置时区中的日期”移动到明确包含时区信息本身的“DateTimeOffset”。

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

于 2015-08-14T07:28:24.013 回答