如何在瞬时.js中将日期格式化为ISO 8601?

本文档提及作为格式化选项(从 2.7.0 到 http://momentjs.com/docs/#/parsing/special-formats/),但这些都不起作用(甚至 2.7.0):moment.ISO_8601

var date = moment();
date.format(moment.ISO_8601); // error
moment.format(date, moment.ISO_8601); // error

(http://jsfiddle.net/b3d6uy05/1/)

如何立即获得 ISO 8601 .js?


答案 1
moment().toISOString(); // or format() - see below

http://momentjs.com/docs/#/displaying/as-iso-string/

更新根据答案:通过@sennet和@dvlsg的评论(参见小提琴),应该注意和之间存在差异。两者都是正确的,但基本过程不同。 转换为 Date 对象,设置为 UTC,然后使用本机 Date 原型函数以毫秒 () 以 UTC 格式输出 ISO8601。另一方面,使用默认格式 ()而不使用毫秒并保持时区偏移量。formattoISOStringtoISOStringYYYY-MM-DD[T]HH:mm:ss.SSS[Z]formatYYYY-MM-DDTHH:mm:ssZ

我打开了一个问题,因为我认为它可能会导致意想不到的结果。


答案 2

不带参数即可使用:format

var date = moment();
date.format(); // "2014-09-08T08:02:17-05:00"

(http://jsfiddle.net/8gvhL1dz/)