yyyy moment examples dates javascript momentjs date-formatting iso8601

javascript - examples - ¿Cómo formateo una fecha como ISO 8601 en moment.js?



moment timezone (5)

Cuando usa Mongoose para almacenar fechas en MongoDB, debe usar toISOString () porque todas las fechas se almacenan como fechas ISO con milisegundos.

moment.format() 2018-04-17T20:00:00Z moment.toISOString() -> USE THIS TO STORE IN MONGOOSE 2018-04-17T20:00:00.000Z

Estos documentos mencionan moment.ISO_8601 como una opción de formato (desde 2.7.0 - http://momentjs.com/docs/#/parsing/special-formats/ ), pero ninguno de estos funciona (incluso 2.7.0):

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

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

¿Cómo puedo obtener un ISO 8601 de moment.js?


Si solo desea la parte de la fecha (por ejemplo, 2017-06-27), y desea que funcione independientemente de la zona horaria y también en árabe, aquí está el código que escribí:

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 }


También es posible con vanilla JS

new Date().toISOString() // "2017-08-26T16:31:02.349Z"



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

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

Actualización Basado en la respuesta: por @sennet y el comentario de @dvlsg (ver Fiddle ), debe tenerse en cuenta que hay una diferencia entre format y toISOString . Ambos son correctos pero el proceso subyacente difiere. toISOString convierte en un objeto Date, se establece en UTC y luego utiliza la función de prototipo Date nativa para generar ISO8601 en UTC con milisegundos ( YYYY-MM-DD[T]HH:mm:ss.SSS[Z] ). Por otro lado, el format utiliza el formato predeterminado ( YYYY-MM-DDTHH:mm:ssZ ) sin milisegundos y mantiene el desplazamiento de la zona horaria.

Abrí un issue porque creo que puede conducir a resultados inesperados.