J'obtiens une valeur de date à partir d'une base de données comme "2013-02-27 06:06:30" en utilisant StringTokenizer Je vais avoir du temps séparément comme ci-dessous
String startTime = "2013-02-27 06:06:30";
StringTokenizer token = new StringTokenizer(startTime);
String date1 = token.nextToken();
String time1 = token.nextToken();
et dans time1 j'obtiens le résultat 06:06:30,
Puis-je le re-stocker dans une autre variable de type String comme suit?
String displayValue = "06:06 AM";
Et si la variable time1 a la valeur de
String time = 16:00:00;
alors il devrait être converti en:
String displayValue = "04:00 PM";
J'ai eu une réponse juste comme ça.
startTime = "2013-02-27 21:06:30";
StringTokenizer tk = new StringTokenizer(startTime);
String date = tk.nextToken();
String time = tk.nextToken();
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
SimpleDateFormat sdfs = new SimpleDateFormat("hh:mm a");
Date dt;
try {
dt = sdf.parse(time);
System.out.println("Time Display: " + sdfs.format(dt)); // <-- I got result here
} catch (ParseException e) {
e.printStackTrace();
}
Essaye ça..
Date dt = new Date(date1);
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa");
String time1 = sdf.format(dt);
D'abord, vous n'avez pas besoin d'utiliser StringTokenizer
pour obtenir l'heure de la chaîne. Passez simplement votre startTime
comme ceci:
// Get date from string
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = dateFormatter.parse(startTime);
// Get time from date
SimpleDateFormat timeFormatter = new SimpleDateFormat("h:mm a");
String displayValue = timeFormatter.format(date);
// Done!
Essaye ça
String time = "22:35";
try {
SimpleDateFormat sdf = new SimpleDateFormat("H:mm");
Date dateObj = sdf.parse(time);
System.out.println(dateObj);
System.out.println(new SimpleDateFormat("K:mm").format(dateObj));
} catch (final ParseException e) {
e.printStackTrace();
}
Tracez ce lien http://developer.Android.com/reference/Java/text/SimpleDateFormat.html
Date dt = new Date(date1);
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa");
String time1 = sdf.format(dt);
sortie 2 h 00.
Date dt = new Date(date1);
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a",Locale.US);
String time1 = sdf.format(dt);
sortie 2,00 AM
Je recommande d'utiliser un DateFormat, comme SimpleDateFormat
try {
String timeLong = "2013-02-27 06:06:30";
String timeShort = "16:06 AM";
SimpleDateFormat formatLong = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
SimpleDateFormat formatShort = new SimpleDateFormat("hh:mm aa", Locale.US);
Log.v("out", formatShort.format(formatLong.parse(timeLong)));
Log.v("out", formatShort.format(formatShort.parse(timeShort)));
} catch (ParseException e) {
e.printStackTrace();
}
Je suis fatigué aujourd'hui et j'ai l'impression de manquer quelque chose dans ce code, je pourrais donc le modifier plus tard, mais cela fonctionne et n'appelle pas (directement) la classe Date obsolète.
1 En supposant que vous devez afficher l'heure actuelle au format 21h30 . Ce serait une approche assez simple. Même si vous n'en avez pas besoin pour l'heure actuelle, vous devriez pouvoir utiliser le DateFormat ci-dessous pour votre besoin.
Calendar cal = Calendar.getInstance();
DateFormat outputFormat = new SimpleDateFormat("KK:mm a");
String formattedTime = outputFormat.format(cal.getTime());
2 Remarque: Le formateur suivant peut être utilisé pour afficher la même heure au format 24 heures ( 21:30 ).
new SimpleDateFormat("HH:mm");
3 Cependant, si vous voulez construire le même format que dans mon premier point, il est préférable d'utiliser le code suivant car Java décourage l'utilisation de StringTokenizer . Vous pouvez en lire plus ici, http://docs.Oracle.com/javase/6/docs/api/Java/util/StringTokenizer.html
J'espère que cela vous aidera, merci!
String startTime = "2013-02-27 21:06:30";
String[] parts = startTime.split(" ");
DateFormat outputFormat = new SimpleDateFormat("KK:mm a");
SimpleDateFormat parseFormat = new SimpleDateFormat("hh:mm:ss");
try {
Date dt = parseFormat.parse(parts[1]);
System.out.println(outputFormat.format(dt));
} catch(ParseException exc) {
exc.printStackTrace();
}
tilisez simplement le modèle suivant, vous obtiendrez le résultat attendu:
try {
String time = "06:06:30";
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
Date dt = sdf.parse(time);
SimpleDateFormat sdfs = new SimpleDateFormat("hh:mm a");
String formatedTime = sdfs.format(dt);
Log.v("parseTime", formatedTime);
} catch (ParseException e) {
e.printStackTrace();
}
Bon codage :)
Sur Android vous avez également DateFormat
La réponse sélectionnée avait un problème d'affichage du mauvais moment. Si votre heure est 12:30: elle affiche 12:30 AM à la place 12:30 PM. Le code ci-dessous vous aidera à surmonter le problème.
SimpleDateFormat sdf = new SimpleDateFormat("KK:mm:ss");
SimpleDateFormat sdfs = new SimpleDateFormat("hh:mm a");
Date dt1 = null;
try {
dt1 = sdf.parse("12:00:00");
Log.i("Time in Am Pm ", sdfs.format(dt1));
} catch (ParseException e) {
e.printStackTrace();
}