¿Existe un equivalente para calcular el desplazamiento UTC al proporcionar la fecha, la hora y el nombre de la zona horaria usando Angular? Esto es muy fácil en C# - ejemplo a continuación:
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("US Eastern Standard Time"); string dateInput = "2022-11-15"; var parsedDate = DateTime.Parse(dateInput); TimeSpan offset = tzi.GetUtcOffset(parsedDate); // this returns -5 string dateInput2 = "2022-03-20"; var parsedDate2 = DateTime.Parse(dateInput2); TimeSpan offset2 = tzi.GetUtcOffset(parsedDate2); // this returns -4El método getTimezoneOffset() de JavaScript se usa para encontrar el desplazamiento de la zona horaria
let d = new Date(Date.parse("2022-03-21T06:38:30+0000")); console.log(d.getTimezoneOffset()) // 120 minutes offset for meDespués de muchas horas dedicadas a esto, decidí darle moment.js como lo sugirió Joosep.P para probar alguna biblioteca y también por otros. Lo siguiente parece funcionar como se esperaba. Lo que es extraño es que si intenta usar timezoneName en otro lugar que no sea donde se encuentra actualmente y si realiza la depuración, aún verá su propio nombre de zona horaria para la fecha, sin embargo, el desplazamiento se calculará correctamente. Supongo que esto funciona debido a la configuración adecuada de la llamada .tz.
var timezoneName = 'America/New_York'; var dateInput = '2022-11-15'; var parsedDate = moment.tz(dateInput, timezoneName); var offseta = parsedDate.utcOffset()/60; // this returns -5 var offsetb = moment.tz(dateInput, timezoneName).format('Z'); // returns '-05:00' as a string var dateInput2 = '2022-03-20'; var parsedDate2 = moment.tz(dateInput2, timezoneName); var offset2a = parsedDate2.utcOffset()/60; // this returns -4 var offset2b = moment.tz(dateInput2, timezoneName).format('Z'); // returns '-04:00' as a string