Sur le portail d'entreprise de l'un de nos clients, certains utilisateurs de leur profil n'affichaient pas correctement la date de naissance - au lieu du jour requis, le précédent était affiché. Nos développeurs ont découvert que la raison de cette erreur était cachée profondément dans l'histoire.
Tout d'abord, l'équipe a vérifié le backend et s'est assurée que les données arrivent correctement. Nous avons analysé les journaux d'interaction des navigateurs des utilisateurs avec le site - il s'est avéré que le bogue n'est reproduit que dans Safari sur les appareils Apple. Et lorsque les utilisateurs disent que la date de naissance s'affiche correctement, ils accèdent au portail à partir d'un autre appareil et navigateur, par exemple depuis Google Chrome sur leur ordinateur.
De plus, l'équipe a commencé à itérer sur différentes périodes, raccourcissant progressivement les intervalles de temps afin de comprendre à quelle date notre bogue est associé. Il s'est avéré que le problème tournait vers juin 1930 - c'est là que se produit la panne de temps, et uniquement dans Safari. Ils ont commencé à comprendre ce qui était spécial le 21 juin 1930, et ils ont déterré que ce jour-là en Union soviétique, l'heure avait été décalée d'une heure à l'avance. Google Chrome gère correctement cette situation, mais pas Safari.
Une autre caractéristique dans le format d'une variable qui transmet cette fois. Le format compte le nombre de millisecondes à partir du temps zéro - le tampon est le 1er janvier 1970. Google Chrome traite la date du 21 juin comme suit: de 23 h 59 à 1 h du matin, il en coûte 1000 millisecondes (soit 1 seconde), c'est-à-dire que cette fois «disparaît». Safari, en revanche, estime que cette heure est là, car il ne sait pas que l'horloge a été traduite en URSS.
L'équipe a signalé ce bogue à Apple Feedback Assistant et attend une réponse. Et le portail recevra son propre patch avec la prochaine version.
P.S. . , . , , «4 ». , , .
, . – 29 . 29 . , .