将日期序列化为 JSON 似乎将日期改回一小时
Serializing dates to JSON seems to alter the date one hour back
我想了解为什么当我以 JSON 格式查看存储在我的 MSSQL 服务器中的日期时,这些日期被改回一小时。
这是存储在 MSSQL 中的 Datetime 日期
2015-08-12 00:00:00.000
Visual Studio 中的调试模式显示从数据库中正确检索日期 "appears"。
{8/12/2015 12:00:00 AM}
这里是 JSON 输出 - 日期提前一小时!我看到 json 时区是 -6,而数据库时区似乎没有,但我的 Web api 配置中没有任何特殊设置。我真的不明白这里发生了什么。感谢任何帮助。
"2015-08-11T23:00:00-06:00",
编辑:我的照片没有显示,所以我编辑以文本格式显示日期 - 希望没问题。
当移动到 OData V4(从早期版本)时,我们 运行 首先 'hickups' 之一是 V4 不 支持 'DateTime' 但 'DateTimeOffset'。在 .Net 术语中,我们正在从 "Date assumed to be in locale timezone of the server running it" 移动到 "DateTimeOffset",后者明确包含时区信息本身。
OWin 将根据您线程的文化信息发出 DateTimeOffset。然后,您的解决方案将在于确保在 "DateTime" 和 "DateTimeOffset" (分别为 DB/EF 和 OWin)之间进行转换时,您不依赖于本地线程的区域设置,而是强制它是考虑为 UTC。
我想了解为什么当我以 JSON 格式查看存储在我的 MSSQL 服务器中的日期时,这些日期被改回一小时。
这是存储在 MSSQL 中的 Datetime 日期
2015-08-12 00:00:00.000
Visual Studio 中的调试模式显示从数据库中正确检索日期 "appears"。
{8/12/2015 12:00:00 AM}
这里是 JSON 输出 - 日期提前一小时!我看到 json 时区是 -6,而数据库时区似乎没有,但我的 Web api 配置中没有任何特殊设置。我真的不明白这里发生了什么。感谢任何帮助。
"2015-08-11T23:00:00-06:00",
编辑:我的照片没有显示,所以我编辑以文本格式显示日期 - 希望没问题。
当移动到 OData V4(从早期版本)时,我们 运行 首先 'hickups' 之一是 V4 不 支持 'DateTime' 但 'DateTimeOffset'。在 .Net 术语中,我们正在从 "Date assumed to be in locale timezone of the server running it" 移动到 "DateTimeOffset",后者明确包含时区信息本身。
OWin 将根据您线程的文化信息发出 DateTimeOffset。然后,您的解决方案将在于确保在 "DateTime" 和 "DateTimeOffset" (分别为 DB/EF 和 OWin)之间进行转换时,您不依赖于本地线程的区域设置,而是强制它是考虑为 UTC。