Bonjour à tous,
Devant migrer une application développée par un tiers de Windows vers Android, je viens d'être piégé par le cas suivant :
Le code ci-dessous semble être indépendant de l'OS cible mais donne en réalité 2 résultats différents sous Windows et Android. À un endroit de l'application, le codeur a voulu afficher une variable TDate selon le format défini par les paramètres régionaux de l'appareil (un "10/11/2012" français devenant par exemple un "10.11.2012" suisse) dans un label. Dans une autre partie de son code, il a repris la valeur affichée par le label pour en refaire un TDate.
Sous Windows, une date "10/11/1900" est affichée dans le label comme "10/11/1900" et le StrToDate redonne une date "10/11/1900".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 DateTimeToString(str,FormatSettings.ShortDateFormat, EncodeDate(myYear,myMonth,MyDay)); Label1.text:=str; ... RefDate:=StrToDate(Label1.text);
Mais sous Android, on a... une date "10/11/1900" qui est affichée dans le label comme "10/11/00" et le StrToDate redonne une date "10/11/2000" !!!!!!!!!!!!!!!!!!!!!!
On a donc un "DateTimeToString(str,FormatSettings.ShortDateFormat..." qui indique l'année sur 4 caractères sous Windows et seulement sur 2 sous Android en perdant dans le cas précis l'information du siècle.
Est-ce que quelqu'un a une explication sur ce comportement différent et est-ce qu'il y a une solution simple pour forcer sous Android l'indication de l'année avec 4 caractères sans qu'il me soit nécessaire de revoir tout le traitement des dates de ce gentil codeur "windowien" ?
Partager