web-dev-qa-db-fra.com

Obtenez la date actuelle en utilisant date-fns au format ISO-8601

Je veux obtenir un format ISO-8601 de la dernière heure: minute: secondes du jour actuel en utilisant la date-fns lib:

J'utilise: endOfDay(new Date());

Fri Sep 14 2018 23:59:59 GMT-0300

Ajoutez donc toISOString () pour l'obtenir au format ISO: endOfDay(new Date()).toISOString()

Résultat: 2018-09-15T02:59:59.999Z

Quand j'ai besoin:

2018-09-14T23:59:59.999Z

7
Joel

2018-09-14T23:59:59.999Z N'est pas la fin de journée calculée par endOfDay(new Date());. C'est 3 heures plus tôt. Le "Z" signifie UTC et votre fuseau horaire local a le décalage UTC -0300.

En exécutant endOfDay vous obtenez une valeur de date, que vous pouvez utiliser dans les comparaisons et autres calculs avec d'autres valeurs de date. Il s'agit d'une date complète avec l'heure dans le fuseau horaire local.

Voulez-vous conserver le même numéro de jour dans la chaîne formatée? Vous pouvez formater la date en une chaîne ISO 8601 dans votre fuseau horaire local:

format(endOfDay(new Date()), 'YYYY-MM-DD[T]HH:mm:ssZZ')
// Prints "2018-09-14T23:59:59.999-0300" in Brazil (BRT)

Voulez-vous obtenir la fin de la journée avec le même numéro qu'aujourd'hui en UTC? Si vous ignorez la fin réelle de votre journée par rapport à d'autres dates, vous pouvez simplement concaténer la "dernière seconde de la journée" avec "Z":

format(new Date(), 'YYYY-MM-DD') + 'T23:59:59.999Z'
// Prints "2018-09-14T23:59:59.999Z" anywhere on Earth
2
Ferdinand Prantl