javascript - Obține data curentă folosind date-fns în format ISO-8601


Vreau să obțin un format ISO-8601 pentru ultima oră:minut:secunde din ziua curentă folosind biblioteca date-fns:

Folosesc: endOfDay(new Date());

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

Așadar, adaugă toISOString() pentru a-l obține în format ISO: endOfDay(new Date()).toISOString()

Rezultat: 2018-09-15T02:59:59.999Z

Când am nevoie:

2018-09-14T23:59:59.999Z

Răspuns #1

2018-09-14T23:59:59.999Z nu este sfârșitul zilei calculat de endOfDay(new Date());. Este cu 3 ore mai devreme. "Z" înseamnă UTC și fusul orar local are un decalaj față de UTC -0300.

Prin executarea endOfDay obții o valoare de dată, pe care o poți folosi în comparații și alte calcule cu alte valori de dată. Este o dată completă cu timp în fusul orar local.

Vrei să păstrezi aceeași valoare a zilei în șirul formatat? Poți formata data într-un șir ISO 8601 în fusul tău orar local:

format(endOfDay(new Date()), 'yyyy-MM-dd\'T\'HH:mm:ssXX')
// Prints "2018-09-14T23:59:59.999-0300" in Brazil (BRT)

formatISO(endOfDay(new Date()))
// Prints "2018-09-14T23:59:59.999-03:00" in Brazil (BRT)

Vrei să ajungi la sfârșitul zilei cu același număr ca astăzi în UTC? Dacă nu ții cont de adevăratul sfârșit al zilei tale în raport cu alte date, poți pur și simplu să concatenezi „ultima secundă a zilei” cu „Z” la ea:

format(new Date(), 'yyyy-MM-dd') + 'T23:59:59.999Z'
// Prints "2018-09-14T23:59:59.999Z" anywhere on Earth

NOTĂ: Dacă utilizați date-fns 1.x, folosiți formatele yyyy-MM-DD[T]HH:mm:ssZZ și yyyy-MM-DD în modelele de mai sus. Sintaxa s-a schimbat în versiunile 2.x. Consultați de asemenea modelele suportate, pe care le puteți adapta la versiunea dvs. de date-fns.

Răspunsul #2

format(endOfDay(new Date()), "yyyy-MM-dd'T'HH:mm:ss'Z'")

Această metodă a funcționat pentru mine