javascript - 如何使用 moment.js 解析“date -u”(unix 日期命令,UTC)的输出?
问题描述
我只是注意到 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
解决方案
上面的 Mark Meyer 为我们提供了解决方案,它似乎使用了特定于语言环境的 year token 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())
推荐阅读
- tensorflow - 使用 Jupyter Notebook 安装和使用 tensorflow_docs
- android-studio - 无法在我的 Android Studio 中设置 Gradle JVM 版本
- java - Ant build.xml 耳朵生成
- javascript - 如何按值获取枚举名称?
- python - 解释来自 Rasa 聊天界面和 api 的输出
- excel - 我怎样才能使用一个公式,所以每隔一行都是空的?
- sql - 多列分页的 SQL 查询;了解 OR 运算符
- javascript - 我想使用 JS 在谷歌地图上显示动态标记
- linux - Linux Mint 19.3 - chgrp/chown 不工作?
- powershell - 用于获取用户名的 AD 组成员身份的 Powershell 脚本