Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

API 设计中使用的时间格式

  我以前设计的 API 中一直都使用 UNIX 时间戳作为时间的传输媒介,虽然这种用法本身没啥问题,但 UNIX 时间戳的格式确实对人类而言太不友好了。听了 @lepture 大神的介绍之后觉得,使用一种人类可读的时间格式来统一 API 中的时间,在调试时确实会更方便。

人性化的 API 设计

  其实人类可读的时间格式有很多种,比如 Cookie 使用的 GMT 时间格式就是人类可读的,可以使用 GMT 时间来传输。不仅有日期,还有星期,不过都是英文缩写,也许有人会用着不爽。不过不用担心,除了 GMT 时间格式外咱还有 ISO 8601,我个人觉得 ISO 8601 比 GMT 易读,但 ISO 8601 在 IE8 的 Date 对象上无法直接解析,所以这个取舍也没啥定论。

时间格式与时区问题

  除了标准格式外,部分时间格式也很有必要考虑。比如服务器响应一个 23:15 这么个时间,其实前端会很纳闷,因为没有时区的话,直接使用时间可能会出问题。如果服务器默认标识以北京时间,而客户端的本地配置不是北京时间,那么时间就无法正确计算。
  在没有特殊约定的情况下都应该使用 GMT 或 ISO 8601 等标准时间格式传输,这样才不会有时区问题。如果真希望响应一个部分的时间格式,那么在 API 文档中也应该明确描述这个时间所在的时区。

时间的精度问题

  UNIX 时间戳的单位是秒,而 JavaScript 的默认时间是毫秒级的,所以需要处理一下这个差异。而 GMT 和 ISO 8601 是支持处理毫秒级时间的,所以不需要再为时间精度的问题纠结。

随想

  使用一种标准的人类可读的时间格式确实比使用 UNIX 时间戳便捷。我甚至想,JSON 为什么不加上日期时间类型的支持(请不要吐槽我如此脑洞大开的想法)?当年使用 XML 作传输的时候,时间格式都可以非常明确地设置,现在用了这么高端的 JSON 反而对这些细节处理感到无力。我们是不是应该反思点什么了呢?

网名:
3.80.55.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^