223 votes

Affichage de l'heure actuelle en format 12 heures avec AM/PM

Actuellement, l'heure affichée est 13:35 PM Cependant Je veux afficher le format 12 heures avec AM/PM, c'est-à-dire 1:35 PM au lieu de 13:35 PM.

Le code actuel est le suivant

private static final int FOR_HOURS = 3600000;
private static final int FOR_MIN = 60000;
public String getTime(final Model model) {
    SimpleDateFormat formatDate = new SimpleDateFormat("HH:mm a");
    formatDate.setTimeZone(userContext.getUser().getTimeZone());
    model.addAttribute("userCurrentTime", formatDate.format(new Date()));
    final String offsetHours = String.format("%+03d:%02d", userContext.getUser().getTimeZone().getRawOffset()
    / FOR_HOURS, Math.abs(userContext.getUser().getTimeZone().getRawOffset() % FOR_HOURS / FOR_MIN));
    model.addAttribute("offsetHours",
                offsetHours + " " + userContext.getUser().getTimeZone().getDisplayName(Locale.ROOT));
    return "systemclock";
}

14voto

Panduka Points 308
// hh:mm will print hours in 12hrs clock and mins (e.g. 02:30)
System.out.println(DateTimeFormatter.ofPattern("hh:mm").format(LocalTime.now()));

// HH:mm will print hours in 24hrs clock and mins (e.g. 14:30)
System.out.println(DateTimeFormatter.ofPattern("HH:mm").format(LocalTime.now())); 

// hh:mm a will print hours in 12hrs clock, mins and AM/PM (e.g. 02:30 PM)
System.out.println(DateTimeFormatter.ofPattern("hh:mm a").format(LocalTime.now()));

10voto

Bala Points 311

Utilisation de Java 8 :

LocalTime localTime = LocalTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("hh:mm a");
System.out.println(localTime.format(dateTimeFormatter));

La sortie est en AM/PM Format.

Sample output:  3:00 PM

7voto

MarGin Points 568

Si vous voulez l'heure actuelle avec AM, PM en Android utiliser

String time = new SimpleDateFormat("hh : mm a", Locale.getDefault()).format(Calendar.getInstance().getTime());

Si vous voulez l'heure actuelle avec am, pm

String time = new SimpleDateFormat("hh : mm a", Locale.getDefault()).format(Calendar.getInstance().getTime()).toLowerCase();

OU

À partir du niveau 26 de l'API

LocalTime localTime = LocalTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("hh:mm a");
String time = localTime.format(dateTimeFormatter);

7voto

Basil Bourque Points 8938

Tl;dr

Laissez le moderne java.time Les classes de la JSR 310 génèrent automatiquement du texte localisé, plutôt que de coder en dur l'horloge de 12 heures et AM/PM.

LocalTime                                     // Represent a time-of-day, without date, without time zone or offset-from-UTC.
.now(                                         // Capture the current time-of-day as seen in a particular time zone.
    ZoneId.of( "Africa/Casablanca" )          
)                                             // Returns a `LocalTime` object.
.format(                                      // Generate text representing the value in our `LocalTime` object.
    DateTimeFormatter                         // Class responsible for generating text representing the value of a java.time object.
    .ofLocalizedTime(                         // Automatically localize the text being generated.
        FormatStyle.SHORT                     // Specify how long or abbreviated the generated text should be.
    )                                         // Returns a `DateTimeFormatter` object.
    .withLocale( Locale.US )                  // Specifies a particular locale for the `DateTimeFormatter` rather than rely on the JVM’s current default locale. Returns another separate `DateTimeFormatter` object rather than altering the first, per immutable objects pattern.
)                                             // Returns a `String` object.

10:31 AM

Localiser automatiquement

Au lieu d'insister sur une horloge de 12 heures avec AM/PM, vous pouvez laisser java.time localiser automatiquement pour vous. Appelez DateTimeFormatter.ofLocalizedTime .

Pour localiser, spécifier :

  • FormatStyle pour déterminer la longueur ou l'abréviation de la chaîne.
  • Locale à déterminer :
    • Le site le langage humain pour la traduction du nom du jour, du nom du mois, etc.
    • Le site normes culturelles décider des questions d'abréviation, de capitalisation, de ponctuation, de séparateurs, etc.

Ici, nous obtenons l'heure actuelle du jour telle qu'elle est vue dans un fuseau horaire particulier. Ensuite, nous générons du texte pour représenter cette heure. Nous localisons en langue française dans la culture canadienne, puis en langue anglaise dans la culture américaine.

ZoneId z = ZoneId.of( "Asia/Tokyo" ) ;
LocalTime localTime = LocalTime.now( z ) ;

// Québec
Locale locale_fr_CA = Locale.CANADA_FRENCH ;  // Or `Locale.US`, and so on.
DateTimeFormatter formatterQuébec = DateTimeFormatter.ofLocalizedTime( FormatStyle.SHORT ).withLocale( locale_fr_CA ) ;
String outputQuébec = localTime.format( formatterQuébec ) ;

System.out.println( outputQuébec ) ;

// US
Locale locale_en_US = Locale.US ;  
DateTimeFormatter formatterUS = DateTimeFormatter.ofLocalizedTime( FormatStyle.SHORT ).withLocale( locale_en_US ) ;
String outputUS = localTime.format( formatterUS ) ;

System.out.println( outputUS ) ;

Voir ceci code exécuté en direct sur IdeOne.com .

10 h 31

10:31 AM

6voto

user2481237 Points 269

Remplacez simplement la déclaration ci-dessous et cela fonctionnera.

SimpleDateFormat formatDate = new SimpleDateFormat("hh:mm a");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X