这个文档提到 moment.ISO_8601
作为格式化选项(从2.7.0 - http://momentjs.com/docs/#/parsing/special-formats/),但这些都不起作用(甚至2.7.0):
var date = moment();
date.format(moment.ISO_8601); // error
moment.format(date, moment.ISO_8601); // error
(http://jsfiddle.net/b3d6uy05/1/)
如何从moment.js获得ISO 8601?
5 回答
http://momentjs.com/docs/#/displaying/as-iso-string/
Update 根据答案:@sennet和@dvlsg的评论(参见Fiddle),应该注意
format
和toISOString
之间存在差异 . 两者都是正确的,但基础过程不同 .toISOString
转换为Date对象,设置为UTC,然后使用本机Date原型函数以UTC为单位输出ISO8601(YYYY-MM-DD[T]HH:mm:ss.SSS[Z]
) . 另一方面,format
使用默认格式(YYYY-MM-DDTHH:mm:ssZ
)而没有毫秒,并保持时区偏移量 .我打开了一个issue,因为我认为它会导致意想不到的结果 .
使用
format
没有参数:(http://jsfiddle.net/8gvhL1dz/)
也可以使用香草JS
如果您只想要日期部分(例如2017-06-27),并且您希望它无论时区和阿拉伯语都能正常工作,这里是我写的代码:
当您使用Mongoose将日期存储到MongoDB时,您需要使用toISOString(),因为所有日期都存储为带有毫秒的ISOdates .