Javascript 如何使用 Moment js 将 ISO 8601 解析为日期和时间格式?

How to parse ISO 8601 into date and time format using Moment js in Javascript?

我目前正在使用 Moment js 将 ISO 8601 字符串解析为日期和时间,但它无法正常工作。我究竟做错了什么?我也会采用任何其他更简单的解决方案。

我想将 ISO 8601:"2011-04-11T10:20:30Z" 解析为字符串中的日期:"2011-04-11" 和字符串中的时间:"10:20:30"

并尝试了 console.log(moment("2011-04-11T10:20:30Z" ,moment.ISO_8601))console.log(moment("2011-04-11T10:20:30Z" , ["YYYY",moment.ISO_8601]) 作为测试,但它只是 returns 一个具有各种不同属性的对象。

moment 操作分为两部分:读入 date/time,然后将其吐出。您已经完成了第一部分:

moment("2011-04-11T10:20:30Z")

但是你需要调用一个输出函数,例如:

moment("2011-04-11T10:20:30Z").format('YYYY-MM-DD h:mm:ss a')

编辑: 然而值得注意的是,Moment 本身是一个已弃用的库,甚至其作者也会建议切换到较小的竞争对手:https://momentjs.com/docs/

和moment.js

var str = '2011-04-11T10:20:30Z';
var date = moment(str);
var dateComponent = date.utc().format('YYYY-MM-DD');
var timeComponent = date.utc().format('HH:mm:ss');
console.log(dateComponent);
console.log(timeComponent);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.1/moment.min.js"></script>

或者简单地使用字符串操作

var str = '2011-04-11T10:20:30Z';
var parts = str.slice(0, -1).split('T');
var dateComponent = parts[0];
var timeComponent = parts[1];
console.log(dateComponent);
console.log(timeComponent);