2010-11-01 4 views
2

J'essayais de formater une chaîne en date.Comment formater une date Chaîne en souhaitable Format de la date

Pour cela, je l'ai écrit un code: -

Calendar cal = Calendar.getInstance(); 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
System.out.println(sdf.format(cal.getTime())); 

Ceci est bien .. Mais maintenant, je veux convertir une chaîne en date formatée comme ci-dessus .. Par exemple

String dt="2010-10-22"; 

Et la sortie devrait ressembler à ceci: - 2010-10-22T00: 00: 00

Comment puis-je faire?

+1

Avez-vous essayé d'autres réponses dans stackoverflow? par exemple. http://stackoverflow.com/questions/3487898/how-to-parse-follow-date-in-java –

Répondre

5
String dt = "2010-10-22"; 

SimpleDateFormat sdfIn = new SimpleDateFormat("yyyy-MM-dd"); 
ParsePosition ps = new ParsePosition(0) 
Date date = sdfIn.parse(dt, pos) 

SimpleDateFormat sdfOut = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 

System.out.println(sdfOut.format(date)); 
+0

Merci cela a fonctionné ... –

+1

Vous n'avez pas besoin de 'new ParsePosition (0)'. Appelez 'sdfIn.analyser (dt) ', la valeur par défaut est la première position. –

2

Cela devrait le faire pour vous, n'oubliez pas de l'envelopper dans un bloc try-catch juste au cas où.

DateFormat dt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
try 
{ 
Date today = dt.parse("2010-10-22T00:00:00");      
System.out.println("Your Date = " + dt.format(today));  
} catch (ParseException e)  
{ 
//This parse operation may not be successful, in which case you should handle the ParseException that gets thrown. 
//Black Magic Goes Here 
} 
+0

"Juste au cas où" quoi? Je n'aime pas les exemples de code qui "gèrent" les exceptions en imprimant la pile, car ils semblent fonctionner correctement, mais élimine complètement une partie très importante de la solution. Il est préférable de ne pas écrire du tout le bloc de capture, au moins le compilateur force l'utilisateur à ** réfléchir ** à ce qu'il faut faire de l'exception. À cette fin, je préférerais que votre réponse mentionne que l'exception ParseException peut être lancée, et qu'elle devrait être traitée * de façon appropriée *. –

+0

Merci pour la réponse mais je pense que la réponse de David est la meilleure –

+0

Je suis content que vous ayez trouvé votre réponse! Je ne vois rien de fondamentalement dangereux dans l'impression d'une trace de pile dans un extrait. Dieu a pitié de tout développeur qui copie le code directement à partir d'Internet et le déploie mot pour mot. La trace est là pour que le développeur s'arrête et réfléchisse, mais a aussi un point de départ pour commencer à comprendre le problème. Si vous avez besoin du compilateur pour forcer le développeur à regarder son code, alors quelque chose ne va vraiment pas. Juste mon avis bien sûr! – JonVD

0

La même classe que vous utilisez pour la mise en forme de sortie de dates peut également être utilisé pour analyser les dates d'entrée.

Pour utiliser votre exemple, pour analyser la date de l'échantillon: (.-À-dire une heure, minutes, etc.)

String dt = "2010-10-22"; 
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd"); 
System.out.println(dateFormatter.parse(dt)); 

Les champs qui ne sont pas spécifiés sera de 0. Ainsi, votre même code peut être utilisé pour formater la date en sortie.

1

Si votre entrée va être ISO, vous pouvez aussi regarder à l'aide de la Joda Time API, comme ceci:

LocalDateTime localDateTime = new LocalDateTime("2010-10-22"); 
System.out.println("Formatted time: " + localDateTime.toString()); 
+0

Merci, il va vraiment être au format ISO –