如何使用moment.js解析“ date -u”的输出(unix date命令,UTC)?

时间:2019-05-22 06:40:29

标签: javascript datetime momentjs

我实际上只是注意到UNIX date命令不会输出iso8601或RFC2822格式的日期。

我有一些输入的json文档,其日期指定为unix date -u的输出,例如:Mon Oct 22 04:08:48 UTC 2018。我的日期始终在UTC中,因为它们是由date -u生成的。 (下次我会变得聪明,只需使用date -u +"%Y-%m-%dT%H:%M:%SZ"来获取iso8601日期。)

我已经仔细阅读了用于解析的文档,并在网上进行了彻底的搜索,但无法弄清楚我做错了什么。

我正在尝试使用moment.js解析它们:

const instr = 'Mon Oct 22 03:53:08 UTC 2018';
const dateFormatString = "ddd MMM DD HH:mm:ss [UTC] GGGG";
const parsedDate = moment.utc(instr, dateFormatString, true);

它仍然只是给我:

moment.invalid(/* Mon Oct 22 03:53:08 UTC 2018 */)

我在做什么错了?

示例:

https://jsfiddle.net/1c3g0r4j/

var parseString  = 'Mon Oct 22 03:53:08 UTC 2018'; 
var formatString = 'ddd MMM DD HH:mm:ss [UTC] gggg';
var locale = 'en';
var strictParse = true;
var parsed = moment.utc(parseString, formatString, locale, strictParse);

alert(parsed.isValid())  //false

1 个答案:

答案 0 :(得分:0)

上面的Mark Meyer为我们提供了解决方案,该解决方案似乎使用的是特定于语言环境的年份令牌YYYY

var parseString  = 'Mon Oct 22 03:53:08 UTC 2018'; 
var formatString = 'ddd MMM DD HH:mm:ss [UTC] YYYY';
var locale = 'en';
var strictParse = true;
var parsed = moment.utc(parseString, formatString, locale, strictParse);

alert(parsed.isValid())
alert(parsed.toISOString())