2010-04-22 5 views
2

Comment puis-je prendre un chaîne dans un format tel que: 2008-06-02 00:00:00.0 et le convertir en: 02-Jun-2008? Puis-je d'une manière ou d'une autre prendre la chaîne d'origine, la convertir en objet Date, puis utiliser un formateur pour obtenir la sortie finale (plutôt que d'analyser moi-même la chaîne)? Merci!Date de conversion en Java

+0

votre requête 'puis-je en quelque sorte ....' est correcte. Enquêter sur ce chemin plus loin. – KevinDTimm

+1

Personne n'a encore mentionné JodaTime. Cela doit être une première. –

+0

@Paul: il a mentionné dans un commentaire qu'il ne voulait pas utiliser de bibliothèques externes :) C'était assez pour moi. – BalusC

Répondre

7

Vous pouvez utiliser SimpleDateFormat pour convertir un objet String en un objet Date et inversement en fonction d'un motif. Cliquez sur le lien API, vous verrez les modèles expliqués en détail. Une année à 4 chiffres peut être représentée avec yyyy, une abréviation de mois de 3 caractères peut être représentée avec MMM et ainsi de suite.

Vous devez d'abord Parse la String du premier format en un objet Date:

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); 
Date date = sdf1.parse(inputString); 

Ensuite, vous devez le format le Date dans un String du second format:

SimpleDateFormat sdf2 = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH); 
String outputString = sdf2.format(date); 

Notez que vous devez prendre en compte le Locale pour obtenir Le mois sera imprimé en anglais, sinon il utilisera les paramètres régionaux par défaut de la plate-forme pour traduire le mois.

+0

Pour la ligne outputString, ne devrait-il pas être 'sdf2.format (date)'? – justkt

+0

@justkt, qui a déjà été corrigé lors d'une édition précédente :) 'Ctrl + C Ctrl + V' est maléfique. – BalusC

+0

Désolé, j'ai manqué la modification. – justkt

0

Utilisez 2 instances de la classe SimpleDateFormat. Un pour convertir votre chaîne d'entrée à date et seconde pour convertir la date en chaîne mais dans un autre format.

Voici un example of using SimpleDateFormat.

0
DateFormat startFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S"); 
DateFormat endFormat = new SimpleDateFormat("dd-MM-yyyy"); 
String outputString = null; 
try { 
    Date date = startFormat.parse(inputString); 
    outputString = endFormat.format(date); 
} catch(ParseException pe) { 
    throw new IllegalArgumentException(inputString + " is not properly formated.", pe); 
} 
0

Vous pouvez certainement utiliser la classe SimpleDateFormat comme d'autres l'ont recommandé.

Une autre suggestion si elle s'applique dans votre cas. Si vous obtenez ces données à partir d'une requête sql, vous pouvez également utiliser la méthode to_char() pour la formater dans la requête elle-même. Par exemple: to_char (nom_colonne, 'DD-MON-YYYY')