Как отформатировать дату как ISO 8601 в moment.Джей?
эти документы упоминают 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/)
Как я могу получить ISO 8601 с момента.Джей?
5 ответов:
moment().toISOString(); // or format() - see belowhttp://momentjs.com/docs/#/displaying/as-iso-string/
обновление Основываясь на ответе: @sennet и комментарии @dvlsg (см. Скрипка) следует отметить, что есть разница между
formatиtoISOString. Оба верны, но основной процесс отличается.toISOStringпреобразует в объект даты, устанавливает в UTC, затем использует собственную функцию прототипа даты для вывода ISO8601 в UTC с миллисекундами (YYYY-MM-DD[T]HH:mm:ss.SSS[Z]). С другой стороны,formatиспользует формат по умолчанию (YYYY-MM-DDTHH:mm:ssZ) без миллисекунд и поддерживает смещение часового пояса.Я открыл вопрос как мне кажется, это может привести к неожиданным результатам.
использовать
formatбез параметров:var date = moment(); date.format(); // "2014-09-08T08:02:17-05:00"
Если вы просто хотите часть даты (например, 2017-06-27), и вы хотите, чтобы он работал независимо от часового пояса, а также на арабском языке, Вот код, который я написал:
function isoDate(date) { if (!date) { return null } date = moment(date).toDate() // don't call toISOString because it takes the time zone into // account which we don't want. Also don't call .format() because it // returns Arabic instead of English var month = 1 + date.getMonth() if (month < 10) { month = '0' + month } var day = date.getDate() if (day < 10) { day = '0' + day } return date.getFullYear() + '-' + month + '-' + day }
когда вы используете Мангуст для хранения дат в MongoDB, вам нужно использовать toISOString (), потому что все даты хранятся как Изодаты с миллисекундами.
moment.format() 2018-04-17T20:00:00Z moment.toISOString() -> USE THIS TO STORE IN MONGOOSE 2018-04-17T20:00:00.000Z
Comments