【问题标题】:API response format for date+time (iso thing?)日期+时间的 API 响应格式(iso 事情?)
【发布时间】:2012-03-18 08:54:54
【问题描述】:

作为 API 请求的结果,将日期(年、月、日)和时间(小时、分钟和秒)一起显示的标准(或某种符合 ISO 标准的东西)格式是什么?还是在这种情况下应该返回时间戳?

【问题讨论】:

  • Unix 时间戳;自1970-01-01T00:00:00-00:00 (UTC) 以来的秒数。您应该发送时间戳,但如果您必须发送格式化的日期,请发送 ISO8601,看起来像这样。

标签: php api date format iso


【解决方案1】:

我认为返回timestamp 会更好。 它允许您的 API 用户轻松操作它。 (我的看法)

【讨论】:

    【解决方案2】:

    要么执行整数 unix 时间戳,要么执行完整的 ISO8601

    【讨论】:

      【解决方案3】:

      RFC822 格式:2012 年 2 月 18 日 14:27:18 -0000

      DAY MONTH YEAR HOUR:MINUTES:SECONDS UTC-OFFSET
      

      使用date()

      date('d M y H:i:s O')
      

      Twitter 的 API 使用它,它的一些好处是它可以被人类阅读并且易于在 PHP、JavaScript 和其他语言中解析。而且您知道日期显示在哪个时区。

      【讨论】:

      • RFC822 不是一种很好的格式,既不与语言无关,也不与字符串排序。这是一个前 ISO 遗物。
      【解决方案4】:

      使用 ISO8601 格式。并始终使用 UTC 时区。它是 ISO 的标准,应该可以被任何库解析。

      例如2012-02-28T20:27:21+0000

      在 php 中结合使用 DateTimeZoneDateTime 对象来获取 ISO8601 日期。

      $dt = new DateTime("now", new DateTimeZone("UTC"));
      echo $dt->format(DATE_ISO8601)`
      

      请参阅 PHP 手册中的Date/Time 了解更多信息。

      【讨论】:

      • 不要忘记时区以避免混淆。
      • @Michael-O 谢谢。它应该一直是UTC。 ISO8601 中的Z 表示零区。我加了。
      • 那个 PHP 代码添加了压缩的偏移量而不是标准化的 Zulu 时间。
      • DATE_ISO8601 格式模式与您的示例不对应。
      • 您更改了 PHP 环境的默认时区,这可能会影响其余代码。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多