On dirait que lorsque j'utilise la fonction format()
, il convertit automatiquement l'heure UTC d'origine en mon fuseau horaire (UTC + 8). J'ai traversé leurs documents pendant des heures et je ne pouvais pas sembler trouver un moyen de faire défaut à l'heure de l'UTC.
import { parseISO, format } from "date-fns";
const time = "2019-10-25T08:10:00Z";
const parsedTime = parseISO(time);
console.log(parsedTime); // 2019-10-25T08:10:00.000Z
const formattedTime = format(parsedTime, "yyyy-MM-dd kk:mm:ss");
console.log(formattedTime); // 2019-10-25 16:10:00 <-- 8 HOURS OFF!!
J'ai essayé d'utiliser le paquet data-fns-tz
et utiliser quelque chose comme
format(parsedTime, "yyyy-MM-dd kk:mm:ss", {timeZone: "UTC"});
toujours pas de chance.
S'il vous plaît aider!
2019-10-25 08:10:00
2019-10-25 16:10:00
J'ai eu le même problème. Ce que je fais, c'est supprimer le fuseau horaire de la chaîne ISO puis utiliser ce temps avec date-fns:
let time = "2019-10-25T08:10:00Z".slice(0, -1)
Ce qui précède est un temps avec le fuseau horaire et, car il n'y a pas de fuseau horaire-FNS-FNS suppose le fuseau horaire local, alors quand vous faites:
format(parseISO(time), 'h:mm a')
vous obtenez: 8h1, ou quel que soit le format que vous préférez. Il suffit de faire attention à la chaîne que vous coupez. Si c'est toujours le même format, il devrait fonctionner.
essayer
const formatDate = new Date().toISOString().substr(0, 19).replace('T', ' ');