Mi servidor me devuelve fechas en UTC y quiero convertirlas a la zona horaria del servidor (¡incluso si el navegador del cliente está en una zona horaria diferente!)
Aquí hay un ejemplo, mi servidor está en Europa/Berlín.
var dateAsString = '2022-04-11T22:00:00.000Z'; // 2022-04-12 00:00:00 in Europe/Berlin var utcDate = moment.utc(dateAsString); console.log(utcDate.format()); var serverTzDate = utcDate.clone().tz('Europe/Berlin'); console.log(serverTzDate.format()); console.log(serverTzDate.format()); var test = moment.utc('2022-04-11T22:00:00.000Z').tz('Europe/Berlin').format(); console.log(test); <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.2/moment.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.34/moment-timezone-with-data-10-year-range.js"></script>Si mi navegador está en la zona horaria de Europa/Berlín, el resultado es correcto:
2022-04-11T22:00:00Z 2022-04-12T00:00:00+02:00 2022-04-12T00:00:00+02:00Pero si cambio mi zona horaria (para mi ejemplo tomé Pacific/Niue), entonces el resultado es totalmente incorrecto, supongo que el momento está haciendo algo con la zona horaria del navegador, pero ¿cómo evitarlo? Aquí está la salida:
2022-04-11T09:00:00Z 2022-04-11T11:00:00+02:00 2022-04-11T11:00:00+02:00Necesito tener la fecha en la zona horaria del servidor y no en la zona horaria del navegador
Con otra zona horaria: Pacífico/Kiritimati (-840)
2022-04-12T10:00:00Z // Wanted 2022-04-11T22:00:00Z (UTC Date as entered) 2022-04-12T12:00:00+02:00 // Wanted 2022-04-12T00:00:00Z (Converted in Europe/Berlin) 2022-04-12T12:00:00+02:00 // Wanted 2022-04-12T00:00:00Z (Converted in Europe/Berlin) 2022-04-12T12:00:00+02:00 // Wanted 2022-04-12T00:00:00Z (Converted in Europe/Berlin) Nuevamente, todas las fechas son incorrectas, ¿el momento parece no poder analizar mi fecha como una fecha UTC? Aplica el desplazamiento de la zona horaria del navegador incluso si estoy usando el método utc
moment.utc('2022-04-11T22:00:00.000Z').tz('Europe/Berlin').format()por favor revise este documento. https://momentjs.com/timezone/docs/#/using-timezones/
a continuación está el resultado de mi código, independientemente de la zona horaria que haya cambiado, el resultado es '2022-04-12T00:00:00+02:00' 