web-dev-qa-db-fra.com

Convertir la valeur de l'heure au format "hh: mm Am / Pm" en utilisant Android

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";
31
Android learner

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();
}
26
Android learner

Essaye ça..

Date dt = new Date(date1);
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa");
String time1 = sdf.format(dt);
50
Murugan

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!
15
maohieng

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

9
dharam
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

6
saravanan

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.

5
Sam

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();
    }
5
Hamzeen Hameem

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 :)

2
Monir Zzaman

Sur Android vous avez également DateFormat

1
yoah

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();
    }
1
Nikhil