OVH Cloud OVH Cloud

SimpleDateFormat

4 réponses
Avatar
Thomas Escolan
Bonjour à tou(te)s,

J'ai configuré un SimpleDateFormat avec la chaîne de formatage suivante :
"yyyyMMdd-HHmmss" pour renommer des fichiers selon leur date de modification
File.lastModified().
Mon pb, c'est qu'il y a une heure de décalage (EX : 20050304-200002.jpg au
lieu de 20050304-210002.jpg) ; j'ai essayé de mettre Locale.FRANCE et c'est
sans doute une question de fuseau horaire... Mais je n'arrive pas à "mettre
le doigt dessus".

Merci à ceux qui sauront me guider.

4 réponses

Avatar
Christophe Tela
J'ai configuré un SimpleDateFormat avec la chaîne de formatage suivante :
"yyyyMMdd-HHmmss" pour renommer des fichiers selon leur date de
modification File.lastModified().
Mon pb, c'est qu'il y a une heure de décalage (EX : 20050304-200002.jpg au
lieu de 20050304-210002.jpg) ; j'ai essayé de mettre Locale.FRANCE et
c'est sans doute une question de fuseau horaire... Mais je n'arrive pas à
"mettre le doigt dessus".


Je vais sans doute dire une bêtise, mais si ton système est à l'heure GMT,
alors File.lastModified() contient effectivement 20:02. Et c'est donc à toi
de faire la conversion GMT -> GMT+1.

Autrement dit, tu récupères l'heure dans un objet dont la locale est
anglaise, puis tu le passes en locale française, ou alors tu fait bêtement
un ajout d'une heure à la date.

Avatar
Thomas Escolan
Merci beaucoup pour ta réponse.
J'ai bien pensé ajouter un "facteur de correction", mais ça ne me paraît pas
très propre.
En effet, mon application fonctionnera-t-elle lors du changement d'heure, ou
ailleurs qu'en France, dans le monde ?

Dans l'explorateur de Windows, c'est la "bonne date" qui s'affiche, et je
m'attendais à ce que Java suive le mouvement.
Merci quand même, encore une fois.

"Christophe Tela" a écrit dans le message de
news: 427a7502$0$8031$
J'ai configuré un SimpleDateFormat avec la chaîne de formatage suivante :
"yyyyMMdd-HHmmss" pour renommer des fichiers selon leur date de
modification File.lastModified().
Mon pb, c'est qu'il y a une heure de décalage (EX : 20050304-200002.jpg
au
lieu de 20050304-210002.jpg) ; j'ai essayé de mettre Locale.FRANCE et
c'est sans doute une question de fuseau horaire... Mais je n'arrive pas à
"mettre le doigt dessus".


Je vais sans doute dire une bêtise, mais si ton système est à l'heure GMT,
alors File.lastModified() contient effectivement 20:02. Et c'est donc à
toi
de faire la conversion GMT -> GMT+1.

Autrement dit, tu récupères l'heure dans un objet dont la locale est
anglaise, puis tu le passes en locale française, ou alors tu fait bêtement
un ajout d'une heure à la date.



Avatar
Thomas Escolan
Pour ceux qui suivent (?) : la classe java.util.TimeZone a résolu mon pb.

"Thomas Escolan" a écrit dans le message
de news: 4279c9f4$0$3485$
Bonjour à tou(te)s,

J'ai configuré un SimpleDateFormat avec la chaîne de formatage suivante :
"yyyyMMdd-HHmmss" pour renommer des fichiers selon leur date de
modification File.lastModified().
Mon pb, c'est qu'il y a une heure de décalage (EX : 20050304-200002.jpg au
lieu de 20050304-210002.jpg) ; j'ai essayé de mettre Locale.FRANCE et
c'est sans doute une question de fuseau horaire... Mais je n'arrive pas à
"mettre le doigt dessus".

Merci à ceux qui sauront me guider.



Avatar
Thomas Escolan
long time = src.lastModified(); // la date du fichier (File)
// int offset = tz.getOffset(time); // marche pas toujours...
Calendar cal = Calendar.getInstance(tz);
cal.setTime(new Date(time)); // date absolue

int offset = (cal.get(Calendar.ZONE_OFFSET) +
cal.get(Calendar.DST_OFFSET)) / (60 * 1000);
new Date(time + offset); // date localisée

"Thomas Escolan" a écrit dans le message
de news: 42a2e5f5$0$16160$
Pour ceux qui suivent (?) : la classe java.util.TimeZone a résolu mon pb.

"Thomas Escolan" a écrit dans le message
de news: 4279c9f4$0$3485$
Bonjour à tou(te)s,

J'ai configuré un SimpleDateFormat avec la chaîne de formatage suivante :
"yyyyMMdd-HHmmss" pour renommer des fichiers selon leur date de
modification File.lastModified().
Mon pb, c'est qu'il y a une heure de décalage (EX : 20050304-200002.jpg
au lieu de 20050304-210002.jpg) ; j'ai essayé de mettre Locale.FRANCE et
c'est sans doute une question de fuseau horaire... Mais je n'arrive pas à
"mettre le doigt dessus".

Merci à ceux qui sauront me guider.