Ces documents mentionnent moment.ISO_8601
comme option de mise en forme (à partir de 2.7.0 - http://momentjs.com/docs/#/parsing/special-formats/ ), mais aucun de ces travaux (même 2.7.0):
var date = moment();
date.format(moment.ISO_8601); // error
moment.format(date, moment.ISO_8601); // error
( http://jsfiddle.net/b3d6uy05/1/ )
Comment puis-je obtenir un ISO 8601 de moment.js?
moment().toISOString()
Réponses:
http://momentjs.com/docs/#/displaying/as-iso-string/
Mise à jour Sur la base de la réponse: par @sennet et le commentaire de @dvlsg (voir Fiddle ), il convient de noter qu'il existe une différence entre
format
ettoISOString
. Les deux sont corrects mais le processus sous-jacent diffère.toISOString
convertit en un objet Date, prend la valeur UTC puis utilise la fonction prototype native Date pour produire ISO8601 en UTC avec des millisecondes (YYYY-MM-DD[T]HH:mm:ss.SSS[Z]
). En revanche,format
utilise le format par défaut (YYYY-MM-DDTHH:mm:ssZ
) sans millisecondes et conserve le décalage du fuseau horaire.J'ai ouvert un problème car je pense qu'il peut conduire à des résultats inattendus.
la source
moment().utc().format("OUTPUT_FORMAT")
moment().toISOString(true);
.Utilisation
format
sans paramètres:( http://jsfiddle.net/8gvhL1dz/ )
la source
date.toISOString()
conservera les millisecondes et utilisera utc,date.format()
supprimera les millisecondes et utilisera votre fuseau horaire local (ou du moins, c'est le comportement que j'obtiens actuellement dans chrome - jsfiddle.net/8gvhL1dz/22 )Également possible avec vanilla JS
la source
Lorsque vous utilisez Mongoose pour stocker des dates dans MongoDB, vous devez utiliser toISOString () car toutes les dates sont stockées en tant que dates ISO avec des millisecondes.
la source
Si vous voulez juste la partie date (par exemple 2017-06-27), et que vous voulez qu'elle fonctionne indépendamment du fuseau horaire et également en arabe, voici le code que j'ai écrit:
la source
la source