web-dev-qa-db-fra.com

SimpleDateFormat renvoie une date de 24 heures: comment obtenir une date de 12 heures?

Je veux l’heure actuelle en millisecondes, puis le stocker au format 12 heures, mais avec ce morceau de code, j’ai un temps de formatage de 24 heures.

long timeInMillis = System.currentTimeMillis();
Calendar cal1 = Calendar.getInstance();
cal1.setTimeInMillis(timeInMillis);
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy HH:mm:ss a");
dateforrow = dateFormat.format(cal1.getTime());

quelqu'un peut-il suggérer des modifications pour obtenir les résultats souhaités?

40
aneela

Remplacez HH par hh par

long timeInMillis = System.currentTimeMillis();
Calendar cal1 = Calendar.getInstance();
cal1.setTimeInMillis(timeInMillis);
SimpleDateFormat dateFormat = new SimpleDateFormat(
                                "dd/MM/yyyy hh:mm:ss a");
dateforrow = dateFormat.format(cal1.getTime());

Notez que dd/mm/yyyy - vous donnera minutes au lieu du mois .

118
MysticMagicϡ

En se référant à SimpleDataFormat JavaDoc :

Letter | Date or Time Component | Presentation | Examples
---------------------------------------------------------
   H   |  Hour in day (0-23)    |    Number    |    0
   h   |  Hour in am/pm (1-12)  |    Number    |    12
37
Eng.Fouad

Je le retrouve aussi à la dure. H vs h, pour 24 heures vs 12 heures!

5
lwpro2

Bonjour, j'ai testé le code ci-dessous qui a bien fonctionné: 

    long timeInMillis = System.currentTimeMillis();
    Calendar cal1 = Calendar.getInstance();
    cal1.setTimeInMillis(timeInMillis);
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy hh:mm:ss a");
    dateFormat.format(cal1.getTime());
3
Bhavdip Sagar

Oui, a confirmé que le simple fait d'utiliser hh au lieu de HH a résolu mon problème.

Changé de ceci: 

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm aa");

Pour ça: 

SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa");

Vous pouvez toujours utiliser HH pour stocker l'heure si vous ne voulez pas vous soucier de stocker et de traiter avec AM/PM. Ensuite, lorsque vous le récupérez, utilisez hh.

3
Philip

Vous pouvez l'essayer comme ça

  Calendar c= Calendar.getInstance();

  SimpleDateFormat sdf= new SimpleDateFormat("dd/MM/yyyy hh:mm:ss a");
  String str=sdf.format(c.getTime());
1
Manjeet Brar

Il suffit de suivre le code

public static String getFormatedDate(String strDate,StringsourceFormate,
                                     String destinyFormate) {
    SimpleDateFormat df;
    df = new SimpleDateFormat(sourceFormate);
    Date date = null;
    try {
        date = df.parse(strDate);

    } catch (ParseException e) {
        e.printStackTrace();
    }

    df = new SimpleDateFormat(destinyFormate);
    return df.format(date);

}

et passer la valeur dans la fonction comme ça,

getFormatedDate("21:30:00", "HH:mm", "hh:mm aa");

ou consultez cette documentation SimpleDateFormat pour StringsourceFormate et destinyFormate.

0
Nazmus Saadat
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy hh:mm:ss a");

utilisez hh au lieu de HH

0
Ram kiran