我想确保发送到我的 Asp.net Web Api 和从我的 Asp.net Web Api 发送的所有日期都是 UTC 时间。
发送部分(来自 web api)并不太难,因为我可以控制它,但我不确定当某些 3rd 方发送日期时间时该怎么做。
我想知道是否有办法验证它?
我想确保发送到我的 Asp.net Web Api 和从我的 Asp.net Web Api 发送的所有日期都是 UTC 时间。
发送部分(来自 web api)并不太难,因为我可以控制它,但我不确定当某些 3rd 方发送日期时间时该怎么做。
我想知道是否有办法验证它?
除非时区信息已经包含在协议中或以其他方式限制/指示。
这可能意味着 UTC 有一个“Z”指定,而“本地时间”没有时区 .. 或者指定了完整的时区偏移量 .. 或者所有时间都在 UTC .. 或者它可能意味着完全不同的东西。
(这就是为什么我几乎完全放弃了 DateTime 为 DateTimeOffset 并在我的协议设计中包含一个时区偏移,只要这样必须从外部传输。)
您可以使用DateTimeOffset
对象来执行此操作。由于您是 API 的设计者,我强烈建议您包含此信息。它对其他人很有帮助,如果您将 SQL Server 用于 DBMS,则可以使用它DATETIMEOFFSET
来确保一致性。
如果第三方向您发送了一个DateTime
或等效的,除非他们的协议明确声明它是 UTC,那么您不能依赖它是 UTC 并且必须做出猜测或查看协议文档以获取一些提示。