我发现了几个关于此问题的StackoverFlow问题,但没有一点非常明确。
我有一个本地日期时间。我希望在UTC中使用它。我的本地日期时间末尾没有'Z'或任何偏移信息。
我第一次尝试:
moment(mylocaldatetime).toISOString() #works fine because this method always returns time in UTC
但为了与其他代码保持一致,我不想使用ISOString()所以我这样做了:
moment(mylocaldatetime).utc().format()
这似乎工作正常。如果运行此代码的浏览器是UTC + 1,我得到的日期时间比mylocaldatetime小一小时(如果我在格式中指定了偏移字符串,则使用偏移字符串)。即它将mylocaldatetime视为当地时间,考虑到我当前的时区,并以当地时间为UTC。
然而。这似乎与moment.js文档相矛盾,后者非常清楚:
如果要以UTC格式解析或显示片刻,可以使用moment.utc()而不是moment()。 - 注意'解析'。
和
Moment通常将输入时间解释为本地时间(如果使用moment.utc(),则将UTC时间解释为UTC时间)。
如果这些文档评论符合以下这一行:
moment(mylocaldatetime).utc().format()
应该将mylocaldatetime视为utc,然后在utc中输出此datetime - 没有区别。没有转换。但这不是我得到的。
这句话moment(mylocaldatetime).utc().format()
所说的可能是:
使用mylocaldatetime在本地模式下创建一个时刻对象。然后将moment对象置于utc模式。所以现在当我们格式化显示时,我们输出为utc。如果是这种情况,我认为可以使文档更清晰。