Datetime 是否有关于UTC与本地时间的传递时间以及偏移量的约定?

Datetime 是否有关于UTC与本地时间的传递时间以及偏移量的约定?,datetime,format,iso8601,Datetime,Format,Iso8601,我在英国,我的本地时区是格林尼治标准时间,它的偏移量为零——与UTC相同。然而,我们目前在夏季(英国夏令时),这意味着我们需要+1小时 例如,现在英国夏令时的当地时间是“2020-07-22 10:10:40”,UTC是“2020-07-22 09:10:40” 如果我使用ISO8601格式向API传递时间,我可以选择 将其转换为UTC,并在末尾加上一个Z表示为UTC,例如: “2020-07-22T09:10:40Z” 显示我的本地时间,并在末尾添加时区偏移,如下所示: “2020-07-22

我在英国,我的本地时区是格林尼治标准时间,它的偏移量为零——与UTC相同。然而,我们目前在夏季(英国夏令时),这意味着我们需要+1小时

例如,现在英国夏令时的当地时间是“2020-07-22 10:10:40”,UTC是“2020-07-22 09:10:40”

如果我使用ISO8601格式向API传递时间,我可以选择

  • 将其转换为UTC,并在末尾加上一个Z表示为UTC,例如:
  • “2020-07-22T09:10:40Z”

  • 显示我的本地时间,并在末尾添加时区偏移,如下所示:
  • “2020-07-22T10:10:40:00+01:00”

    其中一个比另一个好吗?我想这可能取决于API,但我想知道是否一个被认为比另一个更好,或者使用一个或另一个是否存在一些具体问题


    谢谢

    如果API同时接受两者,并且不需要偏移量信息,则没有规则或惯例。所以这里有一个建议:做一些更方便调试和支持的事情。因此,如果你希望支持人员也在英国,请发送英国时间。如果您希望海外人员必须偶尔读取传输的数据,请发送UTC

    毕竟,ISO 8601被设计为人类可读和机器可读。无论您选择哪种偏移量,您的数据都是机器可读的。人的可读性是主观的。所以,让你自己由那些可能正在阅读你的数据的人来引导

    的确,对于跨时区的时间交换,有一个推荐UTC的通用指南。IMHO本指南指出,API的设计者可能仅将传入消息限制为UTC。如果他们没有,我会说你可以自由做对你最好的事。这也就是说,不知道您的数据是否会发送到任何其他时区


    我最近也遇到了类似的情况。我首先做了非常彻底的测试,以验证我的数据接收器不关心偏移量。然后我选择用本地偏移量发送时间。发送方和接收方当前都在同一时区(系统以后也可能部署在另一个时区),我需要记录所有交换的消息,因此,对于任何阅读日志的人来说,我发现当地时间在那里很方便。

    最大的区别显然是,如果转换为UTC,您将丢失所有时区信息。至于其他方面,我想这只是交易所双方同意的内容。@RobbyCornelissen:我认为,在这两种情况下,您都会丢失时区信息,因为UTC偏移量比时区信息少。然而,UTC是明确的,而UTC偏移量可以有不同的来源。@MrFuppes这就是为什么我说“丢失所有时区信息”。同意这样一个事实,即在很多情况下,不可能根据UTC偏移来确定时区。这是非常明智和有用的,谢谢。我同意使用本地时间可以使它更具可读性,特别是因为通常只有我或其他开发人员在查看数据。