我以前设计的 API 中一直都使用 UNIX 时间戳作为时间的传输媒介,虽然这种用法本身没啥问题,但 UNIX 时间戳的格式确实对人类而言太不友好了。听了 @lepture 大神的介绍之后觉得,使用一种人类可读的时间格式来统一 API 中的时间,在调试时确实会更方便。
在没有特殊约定的情况下都应该使用 GMT 或 ISO 8601 等标准时间格式传输,这样才不会有时区问题。如果真希望响应一个部分的时间格式,那么在 API 文档中也应该明确描述这个时间所在的时区。
人性化的 API 设计
其实人类可读的时间格式有很多种,比如 Cookie 使用的 GMT 时间格式就是人类可读的,可以使用 GMT 时间来传输。不仅有日期,还有星期,不过都是英文缩写,也许有人会用着不爽。不过不用担心,除了 GMT 时间格式外咱还有 ISO 8601,我个人觉得 ISO 8601 比 GMT 易读,但 ISO 8601 在 IE8 的 Date 对象上无法直接解析,所以这个取舍也没啥定论。时间格式与时区问题
除了标准格式外,部分时间格式也很有必要考虑。比如服务器响应一个 23:15 这么个时间,其实前端会很纳闷,因为没有时区的话,直接使用时间可能会出问题。如果服务器默认标识以北京时间,而客户端的本地配置不是北京时间,那么时间就无法正确计算。在没有特殊约定的情况下都应该使用 GMT 或 ISO 8601 等标准时间格式传输,这样才不会有时区问题。如果真希望响应一个部分的时间格式,那么在 API 文档中也应该明确描述这个时间所在的时区。