Comment puis-je convertir cette chaîne à une date standard en Java?
-
05-10-2019 - |
Question
Plus tôt j'ai posté la question suivante: Comment puis-je convertir cette date en Java?
Mais maintenant, je voudrais savoir comment je peux convertir cette chaîne en date / heure.
2010-03-15T16:34:46Z
Par exemple: 03/15/10
MISE À JOUR:
String pattern = "MM/dd/yy 'at' HH:mm";
Date date = new Date();
try {
date = new SimpleDateFormat(pattern).parse(q.getUpdated_at());
} catch (ParseException e) {
e.printStackTrace();
}
dateText.setText(new SimpleDateFormat("MM/dd/yy 'at' hh:mma").format(date));
Donne-moi un résultat comme:
Mon Mar 15 16:34:50 MST 2010
Comment ça puis-je formater être
03/15/10 at 4:34PM
La solution
En un mot, vous voulez convertir une date dans string format à une date dans une autre chaîne format . Vous avez:
2010-03-15T16:34:46Z
et que vous voulez
03/15/10 at 4:34PM
Vous ne voulez pas finir en utilisant java.util.Date
objet que vous avez initialement sous-entendu dans votre question. Vous ne voulez pas utiliser son toString()
depuis que le rendement d'un format fixe comme DÉFINIES dans son javadoc.
La réponse de Bozho est toujours valable. Utilisez java.text.SimpleDateFormat
. Tout d'abord, vous devez parse la date au format de chaîne dans un objet Date
afin que vous puissiez format nouveau dans un autre format de chaîne.
// First parse string in pattern "yyyy-MM-dd'T'HH:mm:ss'Z'" to date object.
String dateString1 = "2010-03-15T16:34:46Z";
Date date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").parse(dateString1);
// Then format date object to string in pattern "MM/dd/yy 'at' h:mma".
String dateString2 = new SimpleDateFormat("MM/dd/yy 'at' h:mma").format(date);
System.out.println(dateString2); // 03/15/10 at 4:34PM
Autres conseils
SimpleDateFormat
et Joda-temps de DateTimeFormat
peut analyser ce, en utilisant ce modèle:
String pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'";
Par exemple:
Date date = new SimpleDateFormat(pattern).parse(dateString);
(Joda-temps):
DateTimeFormatter dtf = DateTimeFormat.forPattern(pattern);
DateTime dateTime = dtf.parseDateTime(s);
Mise à jour
Vous avez 2 formats de date impliqués - un pour parsing l'entrée, et un pour Mise en forme la sortie. Donc:
dateText.setText(new SimpleDateFormat("MM/dd/yy 'at' hh:mma").format(date));
(Bien sûr, pour des raisons d'optimisation, vous pouvez instancier le SimpleDateFormat
qu'une seule fois, et le réutiliser)
Si vous voulez chaîne de format de sortie, changement ligne suivante dans votre code
dateText.setText(date.toString());
à
dateText.setText(String.format("%1$tm/%1$td/%1$ty at %1$tl:%1$tM%1$Tp", date));