我实际上只是注意到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
答案 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())