159 votes

Java : getMinutes et getHours

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.

184voto

Juha Syrjälä Points 11475

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!

107voto

Mark Points 14208

Extrait de la Javadoc de Date.getHours

As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY)

Alors utilisez

Calendar rightNow = Calendar.getInstance();
int hour = rightNow.get(Calendar.HOUR_OF_DAY);

et l'équivalent pour getMinutes.

67voto

J.D. Points 83

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();

38voto

James Points 181

Premièrement, importez java.util.Calendar

Calendar now = Calendar.getInstance();
System.out.println(now.get(Calendar.HOUR_OF_DAY) + ":" + now.get(Calendar.MINUTE));

19voto

Basil Bourque Points 8938

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

Table of types of date-time classes in modern java.time versus legacy.


À 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 ?

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 .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X