我的配置是里斯本时区。当我做 new Date()
我得到我当前的本地日期/时间是 Fri Apr 28 2017 01:10:55 GMT+0100 (GMT Daylight Time)
当我使用 toISOString()
获取 ISO 字符串时,它将应用时区,我将得到:
2017-04-28T00:10:55.964Z
问题是几分钟前的日期时间是这样的(昨天):
2017-04-27T23:45:05.654Z
我尝试了 moment.js(新手),我做了这样的事情
document.write(moment('2017-04-28').format())
但我得到这个 2017-04-28T00:00:00+01:00
这不是 2017-04-28T00:00:00.000Z
我想将此值作为 restful 方法的参数传递,以将其自动解析为 DateTime 类型,但如果我传递 moment.js 格式的输出,那么它将被解析为 2017-04-27 23:00:00.00
如果我使用 new Date()
或 new Date('2017-04-27')
(日期部分)创建新日期,我只想获取如下没有时区的 ISO 格式:
2017-04-28T00:00:00.000Z
是否有像 toISOString() 这样的 javascript 方法或使用 maybe moment 来获取该格式?
无论什么时区或一天中的哪个时刻,我都只是模拟给定日期的午夜。
原文由 Maximus Decimus 发布,翻译遵循 CC BY-SA 4.0 许可协议
很不清楚你在问什么。如果您希望 UTC 日期的小时数始终为 0,则将 UTC 小时数设置为 0 并使用 toISOString ,例如
当然,这将显示 UTC 日期,该日期可能与生成日期的系统上的日期不同。
还,
应该 返回 2017-04-27T00:00:00Z(即根据 ECMA-262 应该将其解析为 UTC,这与将其视为本地的 ISO 8601 相反),但这在所有使用的实现中都不可靠。
如果你只想获取 ISO 8601 格式的当前日期,你可以这样做:
但是,由于内置的 toISOString 使用 UTC,这可能会造成混淆。如果需要 UTC 日期,则: