Comment obtenir les heures et les minutes depuis Date.getHours
y Date.getMinutes
a été déprécié ? Les exemples que j'ai trouvés sur Google ont utilisé les méthodes dépréciées.
Réponses
Trop de publicités?Essayez d'utiliser Joda Time au lieu des classes standard java.util.Date. La bibliothèque Joda Time dispose d'une API bien plus performante pour la gestion des dates.
DateTime dt = new DateTime(); // current time
int month = dt.getMonth(); // gets the current month
int hours = dt.getHourOfDay(); // gets hour of day
Voir ceci pregunta pour connaître les avantages et les inconvénients de l'utilisation de la bibliothèque Joda Time.
Joda Time peut également être inclus dans une future version de Java en tant que composant standard, cf. JSR-310 .
Si vous devez utiliser les classes traditionnelles java.util.Date et java.util.Calendar, consultez leurs JavaDoc's pour obtenir de l'aide ( java.util.Calendar y java.util.Date ).
Vous pouvez utiliser les classes traditionnelles comme celle-ci pour récupérer les champs d'une instance de date donnée.
Date date = new Date(); // given date
Calendar calendar = GregorianCalendar.getInstance(); // creates a new calendar instance
calendar.setTime(date); // assigns calendar to given date
calendar.get(Calendar.HOUR_OF_DAY); // gets hour in 24h format
calendar.get(Calendar.HOUR); // gets hour in 12h format
calendar.get(Calendar.MONTH); // gets month number, NOTE this is zero based!
Java.time
Bien que je sois un fan de Joda-Time , Java 8 présente le java.time qui constitue enfin une solution standard Java digne de ce nom ! Lisez cet article, Date et heure de Java SE 8 pour une bonne quantité d'informations sur java.time en dehors des heures et des minutes.
En particulier, regardez le LocalDateTime
clase.
Heures et minutes :
LocalDateTime.now().getHour();
LocalDateTime.now().getMinute();
En résumé
ZonedDateTime.now().getHour()
ou
LocalTime.now().getHour()
ZonedDateTime
El Réponse de J.D. est bonne mais pas optimale. Cette réponse utilise le LocalDateTime
classe. Dépourvue de tout concept de fuseau horaire ou de décalage par rapport à l'UTC, cette classe ne peut pas représenter un moment.
Mieux vaut utiliser ZonedDateTime
.
ZoneId z = ZoneID.of( "America/Montreal" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;
Spécifier le fuseau horaire
Si vous omettez le ZoneId
l'un d'eux est appliqué implicitement au moment de l'exécution en utilisant le fuseau horaire par défaut de la JVM.
Alors ça :
ZonedDateTime.now()
est le même que celui-là :
ZonedDateTime.now( ZoneId.systemDefault() )
Il est préférable d'être explicite, en indiquant votre fuseau horaire souhaité/attendu. La valeur par défaut peut changer à tout moment pendant l'exécution.
Si cela est critique, confirmez le fuseau horaire avec l'utilisateur.
Heure-minute
Interroger le ZonedDateTime
pour l'heure et la minute.
int hour = zdt.getHour() ;
int minute = zdt.getMinute() ;
LocalTime
Si vous voulez juste l'heure du jour sans le fuseau horaire, extrayez LocalTime
.
LocalTime lt = zdt.toLocalTime() ;
Ou sautez ZonedDateTime
entièrement, en passant directement à LocalTime
.
LocalTime lt = LocalTime.now( z ) ; // Capture the current time-of-day as seen in the wall-clock time used by the people of a particular region (a time zone).
java.time types
À 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
.
Pour en savoir plus, consultez le Tutoriel Oracle . Et recherchez sur Stack Overflow de nombreux exemples et explications. La spécification est JSR 310 .
El Joda-Time Le projet, actuellement en mode de maintenance conseille de migrer vers le java.time classes.
Vous pouvez échanger java.time directement avec votre base de données. Utilisez un Pilote JDBC conforme à JDBC 4.2 ou plus tard. Pas besoin de ficelles, pas besoin de java.sql.*
classes.
Où obtenir les classes java.time ?
-
Java SE 8 , Java SE 9 , Java SE 10 , Java SE 11 et ultérieures - 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
- La plupart des java.time est rétroportée vers Java 6 et 7 dans la section Trois Dix-Backport .
-
Android
- Les versions ultérieures d'Android intègrent des implémentations de la fonction java.time classes.
- Pour les Android plus anciens (<26), 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
et plus .
- Réponses précédentes
- Plus de réponses