Code Java pour obtenir l’heure actuelle

Je recherche du code en java pour récupérer ou synchroniser l’heure de mon système PC local dans mon application.

Essaye ça:

 import java.text.SimpleDateFormat; import java.util.Calendar; public class currentTime { public static void main(Ssortingng[] 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 supplémentaire, vous pouvez consulter java api:

SimpleDateFormat

Calendrier

Tous les deux

new java.util.Date()

et

System.currentTimeMillis()

vous donnera l’heure du système actuel.

tl; dr

 Instant.now() // UTC 

…ou…

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

Détails

Les classes java.util.Date / .Calendar regroupées sont notoirement .Calendar . Évite-les. Ils sont maintenant hérités, supplantés par le framework java.time .

Au lieu de cela, utilisez soit:

  • java.time
    Intégré à Java 8 et versions ultérieures. Successeur officiel de Joda-Time.
    Porté vers Java 6 & 7 et vers Android .
  • Joda-Time
    Bibliothèque tierce, open source, gratuite.

java.time

 ZonedDateTime zdt = ZonedDateTime.now(); 

Si nécessaire pour l’ancien code, convertissez en java.util.Date. Passez par Instant qui est un moment dans la chronologie en UTC .

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

Fuseau horaire

Mieux vaut spécifier explicitement votre fuseau horaire souhaité / attendu plutôt que de vous fier implicitement au fuseau horaire par défaut actuel de la JVM.

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

Joda-Time

FYI, le projet Joda-Time est maintenant en mode maintenance , l’équipe conseillant la migration vers les classes java.time .

 DateTime now = DateTime.now(); 

Pour convertir un object Joda-Time DateTime en object java.util.Date pour interagir avec d’autres classes…

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

Recherchez StackOverflow avant de publier. Votre question a déjà été posée et répondue.


À propos de java.time

Le framework java.time est intégré à Java 8 et versions ultérieures. Ces classes supplantent les anciennes classes de date / heure héritées telles que java.util.Date , Calendar et SimpleDateFormat .

Le projet Joda-Time , maintenant en mode maintenance , conseille la migration vers les classes java.time .

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

Où obtenir les classes java.time?

  • Java SE 8 , Java SE 9 et versions ultérieures
    • Intégré
    • Partie de l’API Java standard avec une implémentation intégrée.
    • Java 9 ajoute quelques fonctionnalités et corrections mineures.
  • Java SE 6 et Java SE 7
    • Une grande partie de la fonctionnalité java.time est transférée vers Java 6 et 7 dans ThreeTen-Backport .
  • Android
    • Versions ultérieures des implémentations de bundles Android des classes java.time.
    • Pour Android antérieur, le projet ThreeTenABP adapte ThreeTen-Backport (mentionné ci-dessus). Voir Comment utiliser ThreeTenABP… .

Le projet ThreeTen-Extra é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 , etc.

System.currentTimeMillis ()

tout le rest fonctionne par exemple .. par exemple new Date () appelle System.currentTimeMillis ().

Juste pour informer les autres développeurs, et heureusement pour Basil Bourque, je veux juste append ma pierre à ce sujet.

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

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

À votre santé.

PS: Cela ne fonctionnera qu’au moins avec Java 8!

Comme dit ci-dessus, vous pouvez utiliser

 Date d = new Date(); 

Ou utiliser

 Calendar.getInstance(); 

ou si vous le voulez en millis

 System.currentTimeMillis() 

Essayez de cette façon, plus efficace et compatible :

 SimpleDateFormat time_formatter = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss.SSS"); Ssortingng current_time_str = time_formatter.format(System.currentTimeMillis()); //Log.i("test", "current_time_str:" + current_time_str); 

Pas vraiment sûr de ce que vous vouliez dire, mais vous avez probablement besoin de

 Date d = new Date(); 

essaye ça:

 final Ssortingng currentTime = Ssortingng.valueOf(System.currentTimeMillis()); 

Vous pouvez utiliser new Date () et cela vous donnera l’heure actuelle.

Si vous avez besoin de le représenter dans un format (et généralement vous devez le faire), utilisez des formateurs.

 DateFormat df = DateFormat.getDateTimeInstance (DateFormat.MEDIUM, DateFormat.MEDIUM, new Locale ("en", "EN")); Ssortingng formattedDate = df.format (new Date ()); 

new Date (). getTime () est buggé .

  Date date = new Date(); System.out.println(date); System.out.println(date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds()); long t1 = date.getTime(); System.out.println((t1 / 1000 / 60 / 60) % 24 + ":" + (t1 / 1000 / 60) % 60 + ":" + (t1 / 1000) % 60); long t2 = System.currentTimeMillis(); System.out.println((t2 / 1000 / 60 / 60) % 24 + ":" + (t2 / 1000 / 60) % 60 + ":" + (t2 / 1000) % 60); 

Il me renvoie le mauvais moment millis. System.currentTimeMillis() aussi. Puisque je demande à l’ instance de date de me donner l’heure millis correspondante, elle doit renvoyer les noms correspondants, mais pas ceux d’un autre fuseau horaire. C’est marrant comment les méthodes obsolètes sont les seules qui renvoient des valeurs correctes.

Pour obtenir l’heure système, utilisez Calendar.getInstance (). GetTime ()

Et vous devriez obtenir la nouvelle instance de Calendar à chaque fois pour avoir l’ heure courante .

Pour modifier l’ heure système à partir du code Java, vous pouvez utiliser une ligne de commande

Je comprends que c’est une assez vieille question. Mais j’aimerais préciser que:

 Date d = new Date() 

est déprécié dans les versions actuelles de Java. La méthode recommandée consiste à utiliser un object de calendrier. Pour par exemple:

 Calendar cal = Calendar.getInstance(); Date currentTime = cal.getTime(); 

J’espère que cela aidera les gens qui pourraient référer cette question à l’avenir. Merci à tous.

Essayez ceci pour obtenir la date actuelle.Vous pouvez également obtenir l’heure, les minutes et les secondes actuelles en utilisant les getters:

 new Date(System.currentTimeMillis()).get....()