【发布时间】:2021-06-18 13:59:15
【问题描述】:
使用moment-random 库,我试图在2021-02-10 00:00:00 和2021-02-10 23:59:59 之间生成一个日期,然后创建一个Date 对象。
虽然我仍在尝试了解它在内部是如何工作的,但我认为它在创建 Date obj 之前使用了我的本地时区,这导致 Date 对象超出了我指定的范围。
例子:
let random = momentRandom(
moment().tz("UTC").format("2021-02-10 23:59:59"),
moment().tz("UTC").format("2021-02-10 00:00:00")
).format("YYYY-MM-DD HH:mm:ss");
console.log(random);
console.log(new Date(random))
从上面的代码,我可以得到如下结果(都在范围内)
2021-02-10 16:30:38
2021-02-10T21:30:38.000Z
2021-02-10 05:08:59
2021-02-10T10:08:59.000Z
但最终,如果我继续生成日期,则日期 obj 可能会超出基于随机生成的值的范围。
2021-02-10 21:54:58
2021-02-11T02:54:58.000Z <-- outside the range [2021-02-10 00:00:00, 2021-02-10 23:59:59]
无论如何我可以将随机值用作 UTC 并让Date 构造函数将其视为 UTC?谢谢
例如,期望的输出:
2021-02-10 05:08:59
2021-02-10T05:08:59.000Z
更新:解决方案
我可以通过将“Z”附加到生成的值来获得我期望的结果:
console.log(new Date(random + "Z"));
但是,我仍然想知道它的作用以及幕后发生的事情。仍将不胜感激!
【问题讨论】:
标签: javascript date momentjs utc moment-timezone