Je cherche un code dans java
pour récupérer ou synchroniser l'heure du système de mon PC local dans mon application.
Réponses
Trop de publicités?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 :
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
Intégré avec Java 8 et plus. Successeur officiel de Joda-Time.
Porté à l'arrière à Java 6 & 7 y à Android . -
Joda-Time
Bibliothèque tierce, open-source, gratuite.
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.
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 .
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 .
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 !
- Réponses précédentes
- Plus de réponses