web-dev-qa-db-fra.com

Java code pour obtenir l'heure actuelle

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

148
sushmita

Essaye ç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 supplémentaire, vous pouvez regarder dans Java api:

SimpleDateFormat

Calendrier

161
Artur

Tous les deux

new Java.util.Date()

et

System.currentTimeMillis()

vous donnera l'heure actuelle du système.

141
sleske

tl; dr

_Instant.now()  // UTC
_

…ou…

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

Détails

Les classes groupées _Java.util.Date_.Calendar_ sont notoirement gênantes. Évite-les. Ils sont maintenant hérités, supplantés par le framework _/Java.time .

Au lieu de cela, utilisez soit:

Java.time

_ZonedDateTime zdt = ZonedDateTime.now();
_

Si nécessaire pour l'ancien code, convertissez-le en Java.util.Date. Passez par Instant , qui est un moment sur la timeline 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é/attend plutôt que de vous fier implicitement au fuseau horaire par défaut } de la machine virtuelle.

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

Joda-Time

Pour info, le projet Joda-Time est maintenant en mode maintenance , avec l'équipe conseillant la migration vers les classes Java.time .

_DateTime now = DateTime.now();
_

Pour convertir un objet Joda-Time DateTime en un fichier Java.util.Date pour interagir avec d'autres classes…

_Java.util.Date date = now.toDate();
_

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


À propos de Java.time

Le cadre Java.time est intégré à Java 8 et versions ultérieures. Ces classes supplantent les anciennes anciennes } _ _ (héritées) qui gênaient, telles que Java.util.Date , Calendar _, & SimpleDateFormat .

Le projet Joda-Time , désormais en mode maintenance , conseille de migrer vers les classes Java.time .

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

Où obtenir les classes Java.time?

  • Java SE 8 _, Java SE 9 , et plus tard
    • Intégré.
    • Partie de l'API Java standard avec une implémentation fournie.
    • 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 rétroportée sur Java 6 & 7 dans ThreeTen-Backport .
  • Android
    • Les versions ultérieures de Android regroupent des implémentations des classes Java.time.
    • Pour les anciens Android, le projet ThreeTenABP s'adapteThreeTen-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 à Java.time. Vous pouvez y trouver des classes utiles telles que Interval _, YearWeek , YearQuarter _ et plus _.

47
Basil Bourque

System.currentTimeMillis ()

par exemple, new Date () appelle System.currentTimeMillis ().

10
mP.

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

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

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

Si vous souhaitez simplement obtenir le format HH: MM: SS, procédez comme suit:

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

À votre santé.

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

7
Damiii

Comme dit ci-dessus, vous pouvez utiliser

Date d = new Date();

ou utiliser

Calendar.getInstance();

ou si vous le voulez en millis

System.currentTimeMillis()
5
Nuno Furtado

essaye ça:

final String currentTime    = String.valueOf(System.currentTimeMillis());
4
Joolah

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

Date d = new Date();
4
Raibaz

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"));
String formattedDate = df.format (new Date ());
3
Roman

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

    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 millis de temps. System.currentTimeMillis() aussi. Puisque je demande à la Date instance de me dire le millis correspondant, il doit renvoyer les correspondants, pas les autres, d'un autre fuseau horaire. C'est drôle comme les méthodes obsolètes sont les seules qui retournent des valeurs correctes.

3
mini-me

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

Et vous devriez obtenir chaque fois la nouvelle instance de Calendar pour avoir l'heure actuelle .

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

2
Alex

essayez ceci pour obtenir la date actuelle. Vous pouvez également obtenir l'heure, les minutes et les secondes actuelles à l'aide de getters:

new Date(System.currentTimeMillis()).get....()
1
Brahim Boulkriat

Je comprends que c'est une question assez ancienne. Mais voudrions préciser que:

Date d = new Date() 

est privé dans les versions actuelles de Java. La méthode recommandée consiste à utiliser un objet de calendrier. Pour par exemple:

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

J'espère que cela aidera les personnes susceptibles de poser cette question à l'avenir. Merci à tous.

1
Adi