Javascript 如何使用momentjs将GMT/UTC转换为当地时间并返回?

Javascript 如何使用momentjs将GMT/UTC转换为当地时间并返回?,javascript,momentjs,Javascript,Momentjs,我有以下字符串: 2018年12月25日01:02:20 我打算使用moment.js将其转换为GMT/UTC,如何将其转换为本地时间并返回UTC 当我这样做时: moment(myDateString).local() 然后,稍后尝试转换回: moment(myDateStrig).utc() 它们都产生不同的结果。我如何将时间从UTC转换为本地时间,然后再转换回UTC 注: 当我在字符串上尝试.utc函数时,2018年12月25日01:02:20我得到了一个不同的时间。当我在utc转换时

我有以下字符串:

2018年12月25日01:02:20

我打算使用moment.js将其转换为GMT/UTC,如何将其转换为本地时间并返回UTC

当我这样做时:

moment(myDateString).local()
然后,稍后尝试转换回:

moment(myDateStrig).utc()
它们都产生不同的结果。我如何将时间从UTC转换为本地时间,然后再转换回UTC

注: 当我在字符串上尝试.utc函数时,2018年12月25日01:02:20我得到了一个不同的时间。当我在utc转换时刻进行.local时,我会得到一个不同的日期,而不是我原来的日期2018年12月25日01:02:20


如果可以的话,请给出一个例子,因为看起来我有3个不同的日期。

为了解释字符串,例如2018年12月25日01:02:20,它上面没有时区,您可以调用它上面的时刻,它将解释为本地时间,或者您可以调用它,它将解释为UTC时间

试试这个:

const myUtcMoment = moment.utc(myDateString)
这将生成表示UTC时区2018年12月25日凌晨01:02:20的力矩对象

要将该时刻转换为当地时间,可以执行以下操作:

const myLocalMoment = myUtcMoment.local()
要将其转换回来,可以调用myLocalMoment.utc


顺便说一句,对于这种日期格式,还不清楚这是否是24小时制。为了减少歧义,使用Moment.js文档。

由于您的输入代表UTC时间,您必须按照其他人在评论中的建议使用:

默认情况下,力矩以本地时间解析和显示

如果要以UTC格式解析或显示某个时刻,可以使用矩.UTC而不是矩

此外,由于输入字符串的格式不是ISO 8601或RFC 2822识别的格式,因此必须将format参数作为moment.utc的第二个参数传递,请参阅文档的一节

下面是一个代码示例:

var输入=2018年12月25日01:02:20; 变量fmt='MMMM DD,YYYY HH:mm:ss'; var m=力矩输出,fmt; console.logm.local.formatfmt; console.logm.utc.formatfmt;
2018年12月25日01:02:20没有时区,因此将被解释为当地时间。然后,调用utc将其转换为utc时间。可能的重复项在…中介绍,我已经查看了这些,它们似乎与我的问题不匹配。请注意我使用的日期字符串…2018年12月25日01:02:20。当我执行utc时,它会将其更改为其他内容。当我使用.local时,它与2018年12月25日01:02:20不匹配。你应该查找这个问题。问题是,当我在myUtcMoment和myLocalMoment上使用.format使其看起来像原件时,我无法使其看起来像这样:2018年12月25日01:02:20看起来像是在不同的日期/时间@罗兰多,你能举个例子看看它是什么样子吗?