【问题标题】:REST API standard/best practice for specifing daylight saving time指定夏令时的 REST API 标准/最佳实践
【发布时间】:2021-05-31 16:28:47
【问题描述】:

我有一组 REST API。有一种情况,我想根据给定时间获取数据,如下所示:

2020-02-06T00:00+09:30

如果我在澳大利亚的时间(澳大利亚/阿德莱德),我会在 API 中发送上述日期以在 2 月 6 日获取相应的数据。 +9.30 是澳大利亚中部标准时间的偏移量。

但是,有时指定的时间会落在该时区的夏令时。在上述时区中,从 4 月到 10 月遵循夏令时,偏移量为 (+10.30)。那么,如果我必须获取 9 月的数据,客户是否应该根据日期提供必要的偏移量(2 月的日期为 +9.30,9 月的日期为 +10.30)?

或者客户端应该发送带有当前时区偏移量的日期(忽略日光),并且服务器是否应该负责识别属于夏令时的日期并在处理前一小时将该日期标准化?在 REST 中处理这种情况的正确方法是什么?请协助。

【问题讨论】:

    标签: rest


    【解决方案1】:

    总的来说,我认为这些都是很好的建议:

    • 不要使用偏移,使用 Olson ID。所以你返回的时间应该包括Australia/Adelaide,而不是+9.30。任何有价值的日期库都可以理解Australia/Adelaide
    • 如果您正在处理过去发生的事情,通常只使用 UTC 会更容易。您的服务器可以对所有这些使用 UTC,并且只需让客户端在查看之前处理到本地时区的转换。但这往往最好在应用程序的视图/表示层中处理,而不是数据模型。这很有帮助的一个例子是,当我们过渡到冬季时,“凌晨 1 点 30 分”会在晚上发生两次。
    • 对于将来“计划”的任何内容,通常最好使用“本地时间”+ 时区标识符。例如,如果您想在一年中的每一天下午 2 点做某事,您将需要知道它所在的时区以适应 DST 的变化。世界上某些国家/地区的 DST 规则每年都会发生变化,因此这可以让您的系统适应未来。

    因此,如果您要在明年的特定(本地)时间与某人预定会面。尚无 100% 保证将是哪个 UTC 时间,因为本地时间规则可能会导致偏移。大多数国家/地区的时区规则都相当稳定,但肯定不是全部。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-23
      • 2016-07-23
      • 2020-05-29
      • 1970-01-01
      • 2018-04-27
      • 2018-05-25
      • 2020-04-23
      相关资源
      最近更新 更多