157 votes

Code Java pour obtenir l'heure actuelle

Je cherche un code dans java pour récupérer ou synchroniser l'heure du système de mon PC local dans mon application.

167voto

Artur Points 1271

Essayez ça :

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class currentTime {

    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
        System.out.println( sdf.format(cal.getTime()) );
    }

}

Vous pouvez formater SimpleDateFormat comme vous le souhaitez. Pour toute information complémentaire, vous pouvez consulter l'api java :

SimpleDateFormat

Calendrier

151voto

sleske Points 29978

Les deux sites

new java.util.Date()

y

System.currentTimeMillis()

vous donnera l'heure actuelle du système.

51voto

Basil Bourque Points 8938

En résumé

Instant.now()  // UTC

ou

ZonedDateTime.now(
    // Specify time zone.
    ZoneId.of( "Pacific/Auckland" )
)  

Détails

L'offre groupée java.util.Date / .Calendar sont notoirement difficiles. Évitez-les. Ils sont désormais un héritage, supplantés par les java.time cadre.

Au lieu de cela, utilisez l'un ou l'autre :

java.time

ZonedDateTime zdt = ZonedDateTime.now();

Si nécessaire pour un ancien code, convertir en java.util.Date. Passez par Instant qui est un moment sur la ligne de temps dans UTC .

java.util.Date date = java.util.Date.from( zdt.toInstant() );

Fuseau horaire

Il est préférable de spécifier explicitement votre fuseau horaire souhaité/attendu plutôt que de s'en remettre implicitement à l'architecture de la JVM fuseau horaire actuel par défaut .

ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.now( zoneId );  // Pass desired/expected time zone.

Table of date-time types in Java, both modern and legacy

Joda-Time

Pour info, le Joda-Time Le projet est maintenant en mode de maintenance L'équipe conseille la migration vers le java.time classes.

DateTime now = DateTime.now();

Pour convertir un fichier Joda-Time DateTime à un objet java.util.Date pour inter-opérer avec d'autres classes

java.util.Date date = now.toDate();

Recherchez StackOverflow avant de poster. Votre question a déjà été posée et a reçu une réponse.


À propos de java.time

El java.time est intégré à Java 8 et aux versions ultérieures. Ces classes remplacent les anciennes classes héritage les classes de date et d'heure telles que java.util.Date , Calendar , & SimpleDateFormat .

El Joda-Time Le projet, actuellement en mode de maintenance conseille de migrer vers le java.time classes.

Pour en savoir plus, consultez le Tutoriel Oracle . Et recherchez sur Stack Overflow de nombreux exemples et explications. La spécification est JSR 310 .

Où obtenir les classes java.time ?

  • Java SE 8 , Java SE 9 et plus tard
    • Intégré.
    • Fait partie de l'API Java standard avec une mise en œuvre groupée.
    • Java 9 ajoute quelques fonctionnalités et corrections mineures.
  • Java SE 6 y Java SE 7
    • Une grande partie de la fonctionnalité java.time est rétroportée vers Java 6 & 7 dans Trois Dix-Backport .
  • Android
    • Les versions ultérieures d'Android regroupent les implémentations des classes java.time.
    • Pour les versions antérieures d'Android, le ThreeTenABP le projet s'adapte Trois Dix-Backport (mentionné ci-dessus). Voir Comment utiliser ThreeTenABP .

Table of which java.time library to use with which version of Java or Android

El Trois-Dix-Extra Le projet étend java.time avec des classes supplémentaires. Ce projet est un terrain d'essai pour d'éventuels ajouts futurs à java.time. Vous pouvez y trouver des classes utiles telles que Interval , YearWeek , YearQuarter y plus .

10voto

mP. Points 7516

System.currentTimeMillis()

tout le reste fonctionne à partir de cela par exemple, une nouvelle Date() appelle System.currentTimeMillis().

8voto

Damiii Points 209

Juste pour informer les développeurs, et grâce à Basil Bourque, je veux juste ajouter ma pierre à ce sujet.

Si vous voulez simplement obtenir le format HH:MM:SS, faites ceci :

LocalTime hour = ZonedDateTime.now().toLocalTime().truncatedTo(ChronoUnit.SECONDS);

A la vôtre.

P.S. : Cela ne fonctionnera qu'au moins avec Java 8 !

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