Estoy tratando de usar la biblioteca moment.tz, sin embargo, las fechas siguen cambiando en las nuevas zonas horarias ya que la hora se establece en la medianoche (0:00:00). Me gustaría que las fechas no cambien al cambiar de zona horaria.
Esencialmente tengo
const checkin = 2022-08-30T00:00:00.000Z <-- Date Object console.log(moment.tz(checkin, 'YYYY-MM-DD HH:mm:ss', 'UTC') ); console.log(moment.tz(checkin, 'YYYY-MM-DD HH:mm:ss', 'America/Toronto') );Cuando uso la zona horaria América/Toronto, la fecha se retrasa un día porque la hora es medianoche. Esto da como resultado el siguiente resultado:
Moment<2022-08-30T00:00:00Z> Moment<2022-08-29T20:00:00-04:00>Mi objetivo es tener la función de momento usando la zona horaria para reflejar la misma fecha (AAAA-MM-DD) como utc. La fecha de entrada no debe cambiarse según la zona horaria. ¿Alguna sugerencia?
Puede cambiar la zona horaria y mantener los mismos valores de fecha y hora configurando el segundo parámetro en verdadero. Asegúrese de que esto es realmente lo que quiere hacer, el objeto de momento ahora representará un momento diferente en el tiempo.
// Create date object let checkin = new Date('2022-08-30T00:00:00.000Z'); // Convert to moment object let checkinMoment = moment.tz(checkin, 'YYYY-MM-DD HH:mm:ss', 'UTC'); // Display console.log(checkinMoment.format()); // Change timezone, keep date and time values the same (ie shift to // a different moment in time checkinMoment.tz('America/Toronto', true); // Show same date and time but in different timezone console.log(checkinMoment.format()); // Alternatively, parse a timestamp in the required zone let d = '2022-08-30T00:00:00.000'; let torontoCheckin = moment.tz(d, "America/toronto"); console.log(torontoCheckin.format()); <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.4/moment.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.34/moment-timezone-with-data-2012-2022.js"></script>