2011-04-07 4 views
2

J'essaie de convertir une chaîne au format de date correct à l'aide de SimpleDateFormat de Java. Pour une raison quelconque, cela ne fonctionne pas avec certains mois comme "Mar", "Mai", "Oct" et "Dec." Quelqu'un peut-il m'aider? Cela fonctionne bien pour tous les autres mois.Conversion d'une chaîne en date formatée

import java.sql.Date; 
import java.text.SimpleDateFormat; 

import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException; 

public class test { 
    public static void main(String args[]) throws java.text.ParseException { 
     try { 
      SimpleDateFormat parse = new SimpleDateFormat("dd. MMM yyyy hh:mm:ss"); 
      SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

      //why this doesn't work with certain months like Mar, May, Oct, and Dec? otherwise it works fine 

      String dateTime = "01. Jun 2010 15:30:32"; 
      //String dateTime = "07. Mar 2011 15:20:10"; 
      //String dateTime = "07. May 2011 15:20:10"; 
      //String dateTime = "07. Oct 2011 15:20:10"; 
      //String dateTime = "07. Dec 2011 15:20:10"; 


      java.util.Date parsed =parse.parse(dateTime); 
      System.out.println("formatted: " + formatter.format(parsed)); 
     } catch(ParseException e) { 
      System.out.println("Caught " + e); 
     } 
    } 
}  
+1

J'ai essayé d'exécuter votre code et cela a fonctionné parfaitement pour moi. Quel est le problème que vous avez rencontré? BTW, vous devriez attraper 'java.text.ParseException' et pas' com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException' – Nishan

+0

Ajouter le paquet 'com.sun. *' Pour ignorer la liste Liste d'autosuggest IDE. – BalusC

Répondre

4

Vous devez définir les paramètres régionaux sur SimpleDateFormat, sinon les paramètres régionaux par défaut de la plate-forme sera utilisée pour les noms de mois. Vous pouvez le faire en le passant comme 2nd argument to the SimpleDateFormat constructor. Si vous souhaitez utiliser des noms de mois au format anglais, passez le Locale.ENGLISH.

new SimpleDateFormat("dd. MMM yyyy hh:mm:ss", Locale.ENGLISH); 

Par ailleurs, vous pouvez en apprendre davantage sur vos paramètres régionaux par défaut de la plate-forme par

System.out.println(Locale.getDefault()); 

Ceci est configureable au niveau du système d'exploitation (dans le panneau de configuration de Windows, par exemple) et comme argument JVM.

+0

Merci ... Cela m'a aidé .... – user523956

+0

De rien. Puisque vous êtes nouveau ici, n'oubliez pas de marquer la réponse acceptée chaque fois que cela vous a aidé à répondre à la question. Voir aussi http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work. – BalusC

Questions connexes