Tengo la zona horaria del usuario, digamos
zona horaria: 'América/Nueva_York'
Quiero realizar algunas tareas a la medianoche según la zona horaria del usuario. ¿Cómo puedo comprobar si ha llegado la medianoche en esta zona horaria?
Última medianoche en una zona horaria específica:
new Date(new Date().toLocaleDateString('en-US', { timeZone: 'America/New_York', timeZoneName: 'short' } ))Hora UTC compatible con la base de datos de la última medianoche en una zona horaria específica
new Date(new Date().toLocaleDateString('en-US', { timeZone: 'America/New_York', timeZoneName: 'short' } )).toISOString()Nota: entienda 'última medianoche' como la medianoche de hoy en la zona
Explicación:
new Date() es la hora actual (cualquiera que sea la zona - objeto de hora)
.toLocaleDateString('en-US', { timeZone: 'America/New_York', timeZoneName: 'short' } ) muestra la fecha actual (sin hora, es medianoche) en la zona especificada (cadena de tiempo con referencia de zona)
new Date(<above midnight time in zone>) analiza la hora de la medianoche en la zona y muestra la hora de la zona horaria actual correspondiente (objeto de hora)
.toISOString() se muestra arriba en la referencia UTC (cadena de fecha y hora ISO)