我有一个像"10/14/2014 5:30:00 AM"
这样的字符串。我需要将其解析为UTC字符串。但是,当我执行moment.utc("10/14/2014 5:30:00 AM").format()
时,我得到"2014-10-13T22:30:00+00:00"
,而我期望得到"2014-10-14T12:30:00+00:00"
。
如何使momentJS相信我的字符串为UTC字符串并解析它,而不会根据本地时区(在我的情况下为+7)移动时间?
最佳答案
这确实是一个bug,还有I filed it here。只要您有时间回退到浏览器的解析器,就会发生此问题。如果在运行此代码时在浏览器的调试控制台中进行监视,则会看到以下警告:
Deprecation warning: moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.
警告是正常的,告诉您不要使用回落到JavaScript
Date
对象的解析器的方式。您可以通过提供格式字符串来避免这种情况。通常,以m/d/y格式传递没有格式字符串的值是一个坏主意,因为并非所有用户都将在其浏览器中具有该格式设置。像1/4/2014这样的值可以解释为1月4日或4月1日。
为了明确地告诉时刻以特定格式进行解析,pass the format string像这样:
moment.utc("10/14/2014 5:30:00 AM", "M/D/YYYY h:mm:ss a")
关于momentjs - 如何解析UTC中的日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26350652/