Necesito usar la función startOfToday para una zona horaria específica . Por ejemplo, en mi zona horaria actual obtengo:
// In my browser, staying at 'Europe/Madrid' timezone Intl.DateTimeFormat().resolvedOptions().timeZone // 'Europe/Madrid' (Zone +0100) startOfDay( new Date() ) // Tue Mar 01 2022 00:00:00 GMT+0100 (Central European Standard Time) /* /\ || || Obtained +0100 (Europe/Madrid) */Obtengo el inicio de la fecha en mi zona horaria actual, ¿cómo puedo pasar una zona horaria para calcular el inicio actual del día en esa zona horaria? Estoy buscando algo como:
// In my browser, staying at 'Europe/Madrid' timezone Intl.DateTimeFormat().resolvedOptions().timeZone // 'Europe/Madrid' (Zone +0100) startOfDay( new Date(), 'America/Toronto' ) // Tue Mar 01 2022 00:00:00 GMT-0500 (Central European Standard Time) /* /\ || || Should be -0500 (America/Toronto) */Logré hacerlo funcionar usando el paquete date-fns-tz :
import { startOfDay } from "date-fns"; import { utcToZonedTime } from "date-fns-tz"; const date = new Date("2022-03-01T04:00:00.000Z") // Tue Mar 01 2022 05:00:00 GMT+0100 const timeZone = "America/Toronto" const zonedDate = utcToZonedTime(date, timeZone) // Mon Feb 28 2022 23:00:00 GMT+0100 const startOfDateInZonedTime = startOfDay(zonedDate).toISOString() // 2022-02-27T23:00:00.000Z