IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Formatage du pattern de mois textuel avec SimpleDateFormat: Oct ou oct (pb de majuscule)


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 11
    Points : 11
    Points
    11
    Par défaut Formatage du pattern de mois textuel avec SimpleDateFormat: Oct ou oct (pb de majuscule)
    Bonjour,

    J'ai développé un soft qui, entre autres choses, formate un nom de fichier contenant un pattern de date entré par l'utilisateur (je lui impose le format utilisé par SimpleDateFormat) en utilisant la date actuelle, et avec le résultat cherche si un fichier existe portant ce nom.

    Mon problème, c'est qu'un utilisateur veut matcher des fichiers ayant un nom du genre: "monfichier2009oct12.ext". Il entre donc le nom de fichier avec le pattern yyyyMMMdd. L'ennui c'est qu'avec ce pattern, MMM est formatté en Oct et non pas oct, c'est à dire avec une majuscule au début. Or le système de fichier est Unix, donc case sensitive, du coup mon soft cherche le fichier "'monfichier2009Oct23.ext" et ne le trouve pas...

    Ma question est donc: existe t-il avec SimpleDateFormat un pattern de mois qui formate en texte sans la majuscule au début? Et sinon, y a t-il moyen de facilement étendre SimpleDateFormat pour lui ajouter un tel pattern, ou bien faut-il tout réécrire from scratch? (sachant que je ne peux influer sur le nom du fichier effectif qui ne dépend pas de moi...)

    D'avance merci!!

    Luthier

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu peux utiliser la classe DateFormatSymbols pour définir les libellés de chaque mois, et de tout éléments "textuel" en général.

    Le plus simple dans ton cas étant de le récupérer depuis ton DateFormat et de le modifier comme bon te semble :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    	SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMMdd", Locale.US);
     
    	System.out.println( sdf.format(new Date()) ); // 2009Oct12
     
    	// On récupère les symboles :
    	DateFormatSymbols symbols = sdf.getDateFormatSymbols();
    	// On récupère les libellés des mois au format court :
    	String[] shortMonths = symbols.getShortMonths();
    	// On met tout en minuscule :
    	for (int i=0; i<shortMonths.length; i++) {
    		shortMonths[i] = shortMonths[i].toLowerCase();
    	}
    	// On change les libellés court :
    	symbols.setShortMonths(shortMonths);
    	// Et on change les symbols du SimpleDateFormat :
    	sdf.setDateFormatSymbols(symbols);
     
    	System.out.println( sdf.format(new Date()) ); // 2009oct12
    a++

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoup!

    Mais ça n'ira pas vraiment comme solution. En effet, d'autres utilisateurs peuvent mettre des pattern pour des mois avec majuscule (Oct), il faudrait donc que selon le pattern l'un ou l'autre puisse être choisi.

    Bon au pire je peux toujours ajouter un signe artificiel à la fin ou au début du pattern complet qui dise si, dans ce pattern, les mois sont à prendre en oct ou Oct et faire l'opération ou non en fonction, mais ça complique le format pattern pour l'utilisateur c'est moyen.... Et ça ne couvrira pas les fichierOct.2009oct23.ext ou bien les OCT ou les OcT :-p Je sais je pinaille mais plus on généralise mieux c'est non? :-)

    Bref, a t-on moyen d'intervenir sur les pattern eux même? L'idéal serait de pouvoir définir ses propres patterns, ici pour le mois par exemple... Est-ce possible?

    Merci!

Discussions similaires

  1. Formatage du mois 'MON' avec NLS_LANG=FRENCH_FRANCE
    Par cyrtex dans le forum Oracle
    Réponses: 9
    Dernier message: 19/04/2010, 10h03
  2. Problème avec SimpleDateFormat
    Par hugo123 dans le forum Langage
    Réponses: 5
    Dernier message: 20/06/2006, 15h06
  3. Problème avec SimpleDateFormat.parse(Date)
    Par nad dans le forum Langage
    Réponses: 2
    Dernier message: 09/06/2006, 13h34
  4. problem avec SimpleDateFormat et lenient
    Par felix79 dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 13/04/2006, 14h40
  5. [date] Problème avec SimpleDateFormat
    Par elzedo dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 29/01/2006, 23h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo