Cómo el error de cumpleaños perdido nos introdujo en la historia de la URSS

En el portal corporativo de uno de nuestros clientes, algunos usuarios en su perfil no mostraban la fecha de nacimiento correctamente; en lugar del día requerido, se mostraba el anterior. Nuestros desarrolladores descubrieron que la razón de este error estaba oculta en lo profundo de la historia.



Primero, el equipo verificó el backend y se aseguró de que los datos ingresaran correctamente. Analizamos los registros de interacción de los navegadores de los usuarios con el sitio; resultó que el error se reproduce solo en Safari en dispositivos Apple. Y cuando los usuarios dicen que la fecha de nacimiento se muestra correctamente, ingresan al portal desde otro dispositivo y navegador, por ejemplo, desde Google Chrome en su computadora.





Además, el equipo comenzó a iterar en diferentes períodos, acortando gradualmente los intervalos de tiempo para comprender a qué fecha está asociado nuestro error. Resultó que el problema gira en torno a junio de 1930; aquí es donde se produce la interrupción del tiempo, y solo en Safari. Comenzaron a descubrir qué era especial el 21 de junio de 1930, y descubrieron que ese día en la Unión Soviética, la hora se adelantó una hora. Google Chrome maneja esta situación correctamente, pero Safari no.





Otra característica en el formato de una variable que transmite este tiempo. El formato cuenta el número de milisegundos desde el tiempo cero: el sello es el 1 de enero de 1970. Google Chrome procesa la fecha 21 de junio de la siguiente manera: de 11:59 pm a 1 am cuesta 1000 milisegundos (que es 1 segundo), es decir, esta vez "desaparece". Safari, por su parte, cree que ese tiempo está ahí, ya que no sabe que el reloj se tradujo en la URSS.





El equipo ha informado de este error al Asistente de comentarios de Apple y está esperando una respuesta. Y el portal recibirá su propio parche con la próxima versión.





P.S. . , . , , «4 ». , , .





, . – 29 .  29 . , .








All Articles