Para el objeto JS Date , las cadenas de fecha ISO 8601 que especifican una hora se tratan como locales (nota 2, aquí ).
Si asumimos que la ubicación de una máquina está configurada para estar en Inglaterra y la fecha actual en Inglaterra es el 23 de septiembre de 2022, la zona horaria local actual (?) es UTC+0100 (horario de verano británico).
Si proporciono una fecha sin zona horaria que en mi localidad normalmente sería en verano (es decir, en BST), entonces Date trata la cadena como BST (no es sorprendente).
Si proporciono una fecha sin zona horaria que, en mi localidad, normalmente estaría fuera del horario de verano (es decir, en UTC), entonces Date trata la cadena como UTC (sorprendente, ya que UTC no es actualmente mi zona horaria local).
new Date('2022-06-01T12:00:00') // Wed Jun 01 2022 12:00:00 GMT+0100 (British Summer Time)
new Date('2022-01-01T12:00:00') // Sat Jan 01 2022 12:00:00 GMT+0000 (Greenwich Mean Time) (! - my local timezone is BST, not GMT!)
¿Cómo explico esto? ¿Es BST una zona horaria o es otra cosa (por ejemplo, un modo de zona horaria)?
La zona horaria BST / British Summer Time no sale el 1 de enero. Las áreas que usan BST en el verano usan GMT durante el invierno.
Para las fechas y horas ISO 8601 sin una zona horaria definida, JavaScript no asume que la zona horaria sea la misma que la zona horaria vigente localmente, asume la ubicación geográfica local y luego elige la zona horaria que estaría vigente en el hora de reloj de pared especificada en esa ubicación. O algo.