我在此格式中有以下时间和日期
Mon Aug 22 23:32:59 +0000 2016
我希望将它转换为洛杉矶时间,但是A)它会给出无效日期。和B)如果我删除最后一个参数“UTC”,它会给出正确的时间但错误的分钟。
我将它传递到时刻时区如下
var a = moment.tz("Mon Aug 22 23:32:59 +0000 2016", "ddd MMM DD HH:MM:SS ZZ YYYY", "UTC");
var b = a.tz("America/Los_Angeles");
console.log(b.format("YYYY-MM-DD HH:MM A"));
但它给了我Invalid date
,我无法弄清楚这个问题。
任何澄清都会有所帮助
更新 修复了无效日期的问题
var a = moment("Mon Aug 22 23:32:59 +0000 2016","ddd MMM DD HH:mm:ss ZZ YYYY");
还解决了时刻问题,这是因为我使用的是资本HH和MM而不是hh:mm我应该一直使用。
答案 0 :(得分:2)
根据the documentation,您的格式字符串错误。
console.log(b.format("YYYY-MM-DD HH:mm A"));
它显示08
分钟,因为MM
(大写M)是Months的标记(August = 08),而mm
是分钟的标记。这也是Invalid date
的原因,它试图将会议记录解析为几个月,但无法解决。在更新中,您的大小写是正确的。
答案 1 :(得分:1)
这适用于我的终端:
var a = moment.tz("Mon Aug 22 23:32:59 +0000 2016", "ddd MMM DD HH:mm:ss Z YYYY", "UTC");
var b = a.tz("America/Los_Angeles");
console.log(b.format("YYYY-MM-DD HH:mm A"));
代码中的错误是分钟,秒和偏移部分。在此处查看文档:{{3}}