ArticleCybersécurité & Conformité
Réaction : An 2000: Le Macintosh aussi?
Suite à la brève " An 2000: Le Macintosh aussi? " (Voir le quotidien LMI du 9/02/99),un lecteur nous fait part de la réaction suivante :" "Le bogue peut surgir lorsque l'on ouvre un fichier qui contient une date antérieure à 2000"Non, uniquement une date antérieure à 1990. Les années 90 à 99 et 00 à 10sont correctement interprétée comme étant respectivement 1990 à 1999 et2000 à 2010 lorsque la date courante est entre 1990 et 2010.Voir à : http://developer.apple.com/techpubs/mac/Text/Text-290.html> If the value of the input year is less than 100,
StringToDate determines the year as follows.
1. If (current year) MOD 100 is greater than or equal to 90 and the input
year is less than or equal to 10, the input year is assumed to be in the
next century.
2. If (current year) MOD 100 is less than or equal to 10 and the input year
is greater than or equal to 90, the input year is assumed to be in the
previous century.
3. Otherwise, the input year is assumed to be in the current century.L'idée est que lorsqu'il y a confusion possible (1900 ou 2000 pour 00 parexemple) on prend la date la plus proche si l'on se trouve moins de 10 ansavant ou après un changement de siècle. Par contre, on prend le siècle encours dans les autres cas.Ainsi, 89 est interprété comme 1989 entre 1911 et 1999. Par contre, dèsl'an 2000, elle sera interprétée comme étant 2089. Ce système fait en sorteque même si un programme n'utilise que 2 chiffre pour les années, le systèmeinterprète correctement toutes les dates pour autant qu'elles se situent dansune fourchette de 10 ans autour du changement de siècle.Précisons encore que ce comportement est tout à fait volontaire et documenté(ce qui prouve que les ingénieurs d'Apple avaient au moins envisagé leproblème ce qui n'est pas le cas de tout le monde), et non pas une limitationde la routine StringToDate comme veut le faire croire Pedagoguery.Pedagoguery explique également que le fonctionnement de StringToDate étaitprésenté de manière erronée dans une précédente version de la documentation,qui expliquait que toute année à 2 chiffres était interprétée commeappartenant au 20e siècle. Il me semble que cette erreur ne peut avoirque des conséquences limitées. En effet, si le programme travaille avec4 chiffres, il n'y a aucun problème. S'il travaille avec 2 chiffres, il selimite de fait au 20e siècle, puisque 00 est censé être interprété commeétant 1900 ! L'erreur peut avoir des conséquences uniquement dans le casd'un programme travaillant avec 2 chiffres pour les années du 20e siècle,et avec 4 chiffres au-delà, ce qui n'est pas très cohérent."

