Oui, mais ce sera moins sensible que le problème de la date, parce que le tout premier test effectué porte sur la longueur de la chaine de caractères: un chaine de 3 caractères sera d'office plus petite qu'une chaine de 4
Le véritable problème se posera au niveau du format utilisé pour la date, car, si on code uniquement les caractères représentatifs (par exemple 112012 pour représenter le premier janvier 2012) une date "plus récente sera considérée comme "plus petite" qu'une date plus ancienne qui nécessiterait plus de caractères (par exemple 31122010 pour représenter le 31 décembre 2010).
Il faut donc que le jour et le mois soient tous les deux codés sur deux chiffres, indépendamment d'un éventuel caractère de séparation, de manière à ce que l'on travaille systématiquement sur une chaine de caractères composée de 8 caractères (plus les éventuels caractères de séparation).
Mais cela ne résoudrait qu'une partie du problème, parce que les tests suivants portent systématiquement sur la valeur de chaque caractères, dans l'ordre dans lequel ils arrivent: on test d'abord le premier caractère des deux chaines, puis le deuxième, et ainsi de suite jusqu'à la fin de la chaine. Et dés qu'un caractère diffère d'une chaine à l'autre, on a la réponse que l'on cherchait.
le format "jour-mois-annee" ("JJ-MM-AAAA") posera donc un problème, car on se retrouve de nouveau avec la possibilité d'avoir une date plus récente (exemple 01-01-2012) qui soit considérée comme "plus petite" qu'une date plus ancienne (exemple 31-12-2010), vu que le premier chiffre donnera la réponse.
Pour éviter ce problème, il faut impérativement que l'année soit codée en premier, suivie du mois, et enfin du jour. De cette manière, l'année sera "prioritaire" dans le test, si bien qu'une date de l'année 2012 sera toujours plus grande qu'une date de l'année 2010, et que si les deux dates sont de la même année, on en vienne à coder le mois de l'année, si bien qu'une date du mois de fevrier 2012 (2012-02-xx) sera toujours plus grande qu'une date du mois de janvier de la même année (21012-01-xx). Enfin, si l'année et le mois corresponde, ce sera le jour qui sera pris en compte, si bien que le lendemain sera toujours plus grand que sa veille
Le seul impératif est donc bel et bien de commencer par une date de taille fixe (8 caractères significatifs, plus séparateurs éventuels) et dont le format prenne l'année en premier, suivie du mois et enfin du jour pour que le tri puisse être correct
EDIT: Ce n'est qu'une fois que nous nous serons assurés que la date ne risque pas de "foutre le bordel" dans le tri, que le problème du numéro de fichier se posera. Et encore, tout dépend de si on décide de remettre ce numéro à 0 tous les jours, ou si l'on décide de continuer la numérotation de jours en jours.
En effet, si l'on décide de poursuivre la numérotation de jour en jour (que le premier numéro d'un jour donné correspond au dernier numéro de la veille +1), le problème de la taille du numéro ne se pose pas.
Car, dans le pire des cas (du moins, avant d'avoir dépassé les quatre milliards, si le numéro peut-être représenté par un entier de 32 bits), la taille totale de la chaine de caractères sera augmentée lorsque l'on en vient à multiplier le nombre par dix, si bien que la chaine de caractères correspondant au numéro 100 sera toujours plus grande que la chaine de caractères correspondant au numéro 99 (et à tous ceux qui précèdent).
Le problème se posera si on remet le compteur de fichier à 0 tous les jours, car, dans ce cas, le premier fichier d'un jour donné, portant -- a priori -- le numéro 1 pourrait être considéré comme "plus petit" que le dernier fichier de la veille (sans doute composé d'un nombre à deux, trois ou quatre chiffres). A ce moment là, il faut effectivement prévoir de représenter le numéro du fichier sous la forme d'un nombre de chiffres non significatifs (autrement dit, sous une forme proche de 0000x pour les unités) suffisant pour éviter l'augmentation de la taille de la chaine de caractères pour n'importe quel fichiers, ce qui implique d'évaluer avec "un minimum de précision" le nombre de fichiers qui seront créés tous les jours

Partager