tl; dr
myGregCal
.toZonedDateTime() // Convert from legacy class GregorianCalendar to modern ZonedDateTime.
.getHour() // Get hour-of-day, 0-23.
java.time
beaucoup plus facile avec les classes de java.time modernes qui remplacent les vieux héritage gênant classes de date-heure.
La classe ZonedDateTime
représente un moment sur la ligne de temps dans un fuseau horaire spécifique avec une résolution de nanosecondes.
Convertissez à partir de votre GregorianCalendar
en utilisant de nouvelles méthodes ajoutées aux anciennes classes.
ZonedDateTime zdt = myGregCal.toZonedDateTime() ;
Ou démarrez sans la classe GregorianCalendar
.
ZoneId z = ZoneId.of("America/Montreal");
ZonedDateTime zdt = ZonedDateTime.of(2010 , Month.JANUARY , 1 , 7 , 20 , 0 , 0 , z);
Si vous voulez travailler avec juste la partie temps de jour, un extrait LocalTime
.
LocalTime localTime = zdt.toLocalTime() ;
Si vous voulez vraiment les nombres entiers d'heures et de minutes, vous pouvez les interroger.
int hour = zdt.getHour();
int minute = zdt.getMinute();
A propos java.time
Le cadre java.time est construit en Java 8 et versions ultérieures. Ces classes supplantent les vieilles classes de date-heure legacy gênantes telles que java.util.Date
, Calendar
, & SimpleDateFormat
. Le projet Joda-Time, maintenant en maintenance mode, conseille la migration vers les classes java.time.
Pour en savoir plus, voir le Oracle Tutorial. 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 et SE 9 et plus tard
- intégré.
- Partie de l'API Java standard avec une implémentation groupée.
- Java 9 ajoute quelques fonctionnalités et corrections mineures.
- Java SE 6 et SE 7
- Une grande partie de la fonctionnalité de java.time est de retour à Java 6 Ported .
- Android
Le projet ThreeTen-Extra java.time étend avec des classes supplémentaires. Ce projet est un terrain d'essai pour d'éventuels ajouts futurs à java.time. Vous pouvez trouver ici des classes utiles telles que Interval
, YearWeek
, YearQuarter
et more.
Ceci est un bon. Est-ce toujours le retour 11? : -) Voici plus d'informations: http://java.sun.com/javase/6/docs/api/java/util/Calendar.html – OscarRyz
FYI, les vieilles classes de date-heure gênantes telles que ['java.util. Date'] (https://docs.oracle.com/javase/9/docs/api/java/util/Date.html), ['java.util.Calendar'] (https://docs.oracle.com /javase/9/docs/api/java/util/Calendar.html), et 'java.text.SimpleDateFormat' sont maintenant [legacy] (https://en.wikipedia.org/wiki/Legacy_system), supplantés par le [java.time] (https://docs.oracle.com/javase/9/docs/api/java/time/package-summary.html) classes intégrées à Java 8 et Java 9. Voir [Tutoriel Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –