从API返回的JSON日期格式(没有时间)

Mat*_*att 6 datetime json date-formatting node.js

想知道我是否应该删除正常存储的时间数据.我们正在使用postgres以及node.js从我们的API返回DateTime的位置:

2013-07-01T00:00:00.000Z

然而,由于这个字段应该只代表一个日期,我觉得在返回之前重新格式化就像这样会更清楚地表明时间不相关:

2013-07-01

思考?

Amy*_*y B 5

如果您要表示日历日期,则没有时间或时区.简短的表示更有意义.

不幸的是,许多javascript实现中的新Date(字符串)可能会对您造成不良影响.

new Date('2015-09-23')
Tue Sep 22 2015 20:00:00 GMT-0400 (Eastern Daylight Time)
Run Code Online (Sandbox Code Playgroud)

解决问题的最简单方法是不使用javascript的日期 - 此类型与其他语言的DateTimeOffset匹配.这是表示日历日期值的不好方法.

但是,无论如何,你可能会使用javascript的日期.下一个最简单的"修复"是避免标准表示(因为标准表示被解释为带UTC的DateTimeOffset).这有两种可能性:

使用"/"代替" - ".

new Date('2015/09/23')
Wed Sep 23 2015 00:00:00 GMT-0400 (Eastern Daylight Time)
Run Code Online (Sandbox Code Playgroud)

使用3个月的月份 - 前导零将被丢弃.

new Date('2015-009-23')
Wed Sep 23 2015 00:00:00 GMT-0400 (Eastern Daylight Time)
Run Code Online (Sandbox Code Playgroud)

如果你在客户端和服务器端都有javascript,那么你就完成了.如果你在服务器端有其他东西,你应该考虑服务器语言如果看到非标准日期格式会做什么.


Gat*_* VP 1

作为 API 用户,我更愿意接收长格式的日期。

出于以下几个原因:

  1. 时区:长格式实际上内置了时区。这很重要。
  2. 解析:大多数语言都能够将长格式读取为本机“日期”对象。在某些语言(例如 C# 和 Java)中,需要强制使用正确的时区来强制使用短日期。您还可以避免长格式造成月/日混淆。
  3. 比较:如果用户输入较短的日期,您的 API 能否正确处理?一个好的 API 需要在进出时看起来相同。

  • 当然可以,但是时区与日期无关。时区会让事情变得很糟糕(例如,如果我的生日是 1900 年 1 月 15 日,那么在中国也是 1900 年 1 月 15 日,尽管时区可能会影响这一点。) (10认同)