【发布时间】:2019-10-22 10:48:56
【问题描述】:
如标题所述,我需要知道如何设置时区以在 OdataV4 客户端中使用。
在我们的数据库中,我们一直将 DateTime-Values 存储为 GMT+1。
很长一段时间以来,我们一直在使用在 OdataV3 上工作的 WebApi。 只要我们使用 OdataV3,我们就没有遇到过与 TimeZones 相关的问题。
在切换到 OdataV4 后,我们现在面临一些真实的、几乎令人瞩目的问题,即即使我们将服务器上的 TimeZone 设置为 GMT+1,客户端现在也将 DateTimes 转换为 UTC。
这是服务器的输出:
如您所见,时间是相同的。 +02:00 与夏令时有关!
现在无论出于何种原因,客户端在调试时都会显示此时间戳:
我试图找到一种方法,它告诉 DataServiceContext 不使用 UTC 但找不到任何方法。我得到的最接近的是this post,但它似乎不适用于我。
处理 DateTimes 的代码非常多,我们负担不起全部重构。 此外,将服务器切换回 UTC 也不是一种选择,因为那时必须调整每个应用程序。
问题
如何将DataServiceContext 或影响组件 (JsonSerializer f.e.) 设置为我选择的时区?
【问题讨论】:
-
请用发送到客户端的 JSON (DTO) 对象的示例更新您的问题,不同时区是否有多个消费者。
-
您是说希望客户端自动将所有 DateTimeOffsets 转换为特定时区的 DateTime。
-
@lokusking 你找到解决这个问题的方法了吗?
-
@Alex 不幸的是还没有。我开始考虑分叉 Odata-Repo 并自己编译它
标签: c# entity-framework asp.net-web-api2 odata