date-fns
Journaux liées à cette note :
Journal du mardi 17 septembre 2024 à 18:48
Suite de 2024-09-17_1707.
Mon but est toujours de convertir une donnée datetime UTC vers la timezone du navigateur.
L'équivalent du code :
return Temporal.PlainDateTime
.from(value)
.toZonedDateTime('UTC')
.withTimeZone(
Intl.DateTimeFormat().resolvedOptions().timeZone
)
.toString({
offset: 'never',
timeZoneName: 'never'
})
.replace('T', ' ');
avec date-fns est :
import { format } from 'date-fns';
import { fromZonedTime, toZonedTime } from 'date-fns-tz';
return format(
toZonedTime(
fromZonedTime(value, "UTC"),
Intl.DateTimeFormat().resolvedOptions().timeZone
),
"yyyy-mm-dd HH:MM:SS"
);
Ce qui m'évite de devoir utiliser .replace('T', ' ')
.
Par contre, j'aurais bien aimé pouvoir utiliser une syntax du style :
return (
fromZonedTime(value, "UTC")
.toZonedTime(Intl.DateTimeFormat().resolvedOptions().timeZone)
.format("yyyy-mm-dd HH:MM:SS")
);
ce qui ne semble pas possible avec dns-fns
.
Luxon semble proposer une syntax plus agréable :
import { DateTime } from 'luxon';
return DateTime
.fromISO(value, { zone: 'UTC' })
.setZone(Intl.DateTimeFormat().resolvedOptions().timeZone)
.toFormat('yyyy-MM-dd HH:mm:ss');