Nota : Cette réponse obtient toujours des upvotes en date du 2022-03. Le site moment.js La bibliothèque est déprécié . Ce sont les deux principales alternatives : Luxon y Jour.js d'autres sont mentionnés dans le lien de dépréciation.
Luxon
Luxon peut être considéré comme l'évolution de Moment. Il est écrit par Isaac Cambron un collaborateur de longue date de Moment. Veuillez lire Pourquoi Luxon existe-t-il ? et le Pour les utilisateurs de Moment pages dans le Luxon de Luxon.
Locales : Intl fourni Fuseaux horaires : Fourni en interne
Jour.js
Day.js est conçu pour être un remplacement minimaliste de Moment.js, en utilisant une API similaire. Il ne s'agit pas d'un remplacement direct, mais si vous avez l'habitude de l'API de Moment et que vous souhaitez vous lancer rapidement, envisagez d'utiliser Day.js.
Locales : Fichiers de données personnalisés qui peuvent être importés individuellement. Zones : Intl fourni, via un plugin
J'utilise Day.js à cause de la différence de taille, mais Luxon est plus facile à gérer.
Presque toutes les méthodes to-ISO sur le web suppriment les informations relatives au fuseau horaire en appliquant une conversion en heure "Z "ulu (UTC) avant de sortir la chaîne. La méthode native .toISOString() du navigateur supprime également les informations relatives au fuseau horaire.
Cela élimine des informations précieuses, car le serveur, ou le destinataire, peut toujours convertir une date ISO complète en heure zouloue ou en tout autre fuseau horaire dont il a besoin, tout en obtenant les informations sur le fuseau horaire de l'expéditeur.
La meilleure solution que j'ai trouvée est d'utiliser la fonction Moment.js et utilisez le code suivant :
Pour obtenir l'heure ISO actuelle avec des informations sur le fuseau horaire et les millisecondes
now = moment().format("YYYY-MM-DDTHH:mm:ss.SSSZZ")
// "2013-03-08T20:11:11.234+0100"
now = moment().utc().format("YYYY-MM-DDTHH:mm:ss.SSSZZ")
// "2013-03-08T19:11:11.234+0000"
now = moment().utc().format("YYYY-MM-DDTHH:mm:ss") + "Z"
// "2013-03-08T19:11:11Z" <- better use the native .toISOString()
Pour obtenir l'heure ISO d'un objet Date JavaScript natif avec des informations sur le fuseau horaire mais sans les millisecondes
var current_time = Date.now();
moment(current_time).format("YYYY-MM-DDTHH:mm:ssZZ")
Cela peut être combiné avec Date.js pour obtenir des fonctions comme Date.today() dont le résultat peut ensuite être transmis à moment.
Une chaîne de date formatée de la sorte est compilable en JSON, et se prête bien au stockage dans une base de données. Python et C# semblent l'apprécier.