每当我输入数据时,Moment js 都会得到错误的 UTC

Whenever I input data, Moment js gets the wrong UTC

我已经编写了几个月的应用程序,但没有遇到 MomentJs 的重大问题。但是,每当我在 moment() 上输入有关时间的信息时,库突然开始选择错误的 UTC。例如:

const now = moment();
const then = moment("2021-03-28 08:20 pm", "YYYY-MM-DD hh:mm a");
console.log(now, then)
    
//Output
//Moment<2021-03-26T20:28:15+01:00> Moment<2021-03-28T20:20:00+02:00>

我在此处相关的其他主题上来回走动,但找不到答案。其他人面临同样的问题,但出于不同的原因。如果两个时刻都在同一系统上生成,MomentJs 如何使用两个 UTC,从而使用相同的本地时区?我认为这可能与输入 "2021-03-28 08:20 pm" 有关,但我没有传递任何有关 UTC 的信息。有没有人遇到过类似的事情?

一些事情:

  • 不要直接在 Moment 对象上调用 console.log。相反,记录 .format() 函数的输出。

  • 没有“错误的 UTC”这样的事情。 UTC 只有一种解释,这就是为什么它是通用的。 (它有一个偏移量 +00:00)。

  • 假设您的意思是这两个值与 UTC 有不同的 offsets,这是在时区转换时预期的,无论是夏令时还是标准时间的变化。

  • 根据您提供的日期和偏移量(以及您在 Stack Overflow 用户配置文件中的位置),我假设您在德国使用时间。

    • 时区 ID 为 "Europe/Berlin"
    • 标准时间(英文)称为欧洲中部时间 (CET),即 UTC+1
    • 夏令时(英文)称为中欧夏令时 (CEST),即 UTC+2
    • 2021 年,CEST 于当地时间 02:00 2021 年 3 月 28 日生效,从而解释了您询问的偏移量差异

您可能还想阅读 dst and timezone 标签维基。