【发布时间】:2020-05-13 01:13:56
【问题描述】:
输入 8:30 PM,本地日期为 2020 年 5 月 12 日,而 UTC 日期已为 2020 年 5 月 13 日
期望的输出2020-05-12 20:30:00
实际输出2020-05-13 20:30:00
尝试了 3 件事:
result = moment('8:30 PM', 'h:mm A').format('YYYY-MM-DD HH:mm:ss');
result = moment.tz('8:30 PM', 'h:mm A', 'America/New_York').format('YYYY-MM-DD HH:mm:ss');
moment.tz.setDefault('America/New_York');
result = moment.tz('8:30 PM', 'h:mm A', 'America/New_York').format('YYYY-MM-DD HH:mm:ss');
【问题讨论】:
-
我没有得到相同的结果,'8:30 PM' 被解析为本地而不是 UTC。
-
@RobG - 我的错,你是对的......但是 - 如果我改变我的时区,我如何设置时刻仍然在“America/New_York”?
-
检查后我相当确定现在时区插件确实存在问题。它总是使用转发日期。
moment.tz('10:30 PM', 'h:mm A', moment.tz.guess()).format('YYYY-MM-DD')任何时候总是给出转发日期,而 moment() 没有。虽然是 OP,但你真的不应该这样做,因为如果你以这种形式将它传递给另一台计算机,它会变得模棱两可,没有日期。即:即使此处的 .tz 存在问题,也没有有效的用例以这种方式使用它 -
似乎当您设置时区并解析时间时,moment.tz 使用当前 UTC 日期作为日期部分,而 moment.js 使用当前本地日期。我猜你宁愿那个 moment.tz 在设定的时区使用当前日期。如果你愿意,可以提交一个错误,但据我所知,moment.js 团队已将注意力转向 Luxon,而 moment.js 处于维护模式,所以如果不是“按设计工作”,那么很可能“不会修复”。 :-/
标签: javascript datetime momentjs moment-timezone