Comment obtenez-vous des heures et des minutes depuis Date.getHours
et êtes-vous Date.getMinutes
obsolète? Les exemples que j'ai trouvés sur la recherche Google utilisent les méthodes obsolètes.
Comment obtenez-vous des heures et des minutes depuis Date.getHours
et êtes-vous Date.getMinutes
obsolète? Les exemples que j'ai trouvés sur la recherche Google utilisent les méthodes obsolètes.
Réponses:
Essayez d'utiliser Joda Time au lieu des classes java.util.Date standard. La bibliothèque Joda Time a une bien meilleure API pour gérer les dates.
DateTime dt = new DateTime(); // current time
int month = dt.getMonth(); // gets the current month
int hours = dt.getHourOfDay(); // gets hour of day
Consultez cette question 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, voir JSR-310 .
Si vous devez utiliser les classes traditionnelles java.util.Date et java.util.Calendar, consultez leur JavaDoc pour obtenir de l'aide ( java.util.Calendar et 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!
Depuis la Javadoc pour 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.
ZonedDateTime
place.
Bien que je sois fan de Joda-Time , Java 8 présente le package java.time qui est enfin une solution standard Java intéressante! Lisez cet article, Java SE 8 Date et heure , pour une bonne quantité d'informations sur java.time en dehors des heures et des minutes.
En particulier, regardez la LocalDateTime
classe.
Heures et minutes:
LocalDateTime.now().getHour();
LocalDateTime.now().getMinute();
LocalDateTime.now(ZoneId.of("Asia/Manilla"))
. Lire now()
une seule fois pour la cohérence (le temps passera entre les deux appels). Si la date est vraiment hors de propos, LocalTime
fonctionne aussi.
ZonedDateTime
classe plutôt que LocalDateTime
. Avec LocalDateTime
vous, vous supprimez des informations de fuseau horaire précieuses sans raison, sans rien gagner.
ZonedDateTime.now().getHour()
… ou …
LocalTime.now().getHour()
ZonedDateTime
La réponse de JD est bonne mais pas optimale. Cette réponse utilise la LocalDateTime
classe. N'ayant aucun concept de fuseau horaire ou de décalage par rapport à 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 ) ;
Si vous omettez l' ZoneId
argument, l'un est appliqué implicitement au moment de l'exécution en utilisant le fuseau horaire par défaut actuel de la JVM.
Donc ça:
ZonedDateTime.now()
… Est la même chose:
ZonedDateTime.now( ZoneId.systemDefault() )
Mieux vaut être explicite, en passant votre fuseau horaire souhaité / attendu. La valeur par défaut peut changer à tout moment pendant l'exécution.
S'il est critique, confirmez le fuseau horaire avec l'utilisateur.
Interrogez 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 passez ZonedDateTime
entièrement à 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).
Le framework java.time est intégré à Java 8 et versions ultérieures. Ces classes supplantent les anciens gênants hérités des classes date-heure tels que java.util.Date
, Calendar
, &SimpleDateFormat
.
Pour en savoir plus, consultez le didacticiel Oracle . Et recherchez Stack Overflow pour de nombreux exemples et explications. La spécification est JSR 310 .
Le projet Joda-Time , désormais en mode maintenance , conseille de migrer vers java.time classes .
Vous pouvez échanger des objets java.time directement avec votre base de données. Utilisez un pilote JDBC compatible avec JDBC 4.2 ou version ultérieure. Pas besoin de cordes, pas besoin dejava.sql.*
classes.
Où obtenir les classes java.time?
Le projet ThreeTen-Extra étend java.time avec des classes supplémentaires. Ce projet est un terrain d'essai pour d'éventuels futurs ajouts à java.time. Vous trouverez peut - être des classes utiles ici, comme Interval
, YearWeek
, YearQuarter
et plus .
Essayez Calender. Utilisez getInstance pour obtenir un Calender-Object. Utilisez ensuite setTime pour définir la date requise. Vous pouvez maintenant utiliser get (int field) avec la constante appropriée comme HOUR_OF_DAY ou plus pour lire les valeurs dont vous avez besoin.
http://java.sun.com/javase/6/docs/api/java/util/Calendar.html
int hr=Time.valueOf(LocalTime.now()).getHours();
int minutes=Time.valueOf(LocalTime.now()).getMinutes();
Ces fonctions renverront des valeurs int en heures et minutes.
java.sql.Time
? Certainement aucune raison de mettre en jeu cette classe obsolète quand vous en avez java.time.LocalTime
. Vous compliquez trop.
getMinutes()
a été obsolète dans (j'utilise java 1.8) et a été remplacé parCalendar.get(Calendar.MINUTE)
Une autre façon d'obtenir des minutes et des heures consiste à utiliser SimpleDateFormat.
SimpleDateFormat formatMinutes = new SimpleDateFormat("mm")
String getMinutes = formatMinutes.format(new Date())
SimpleDateFormat formatHours = new SimpleDateFormat("HH")
String getHours = formatHours.format(new Date())
java.util.Date
, java.util.Calendar
et java.text.SimpleDateFormat
sont maintenant héritées , supplantées par les classes java.time intégrées à Java 8 et versions ultérieures. Voir le didacticiel d'Oracle .
Je recommanderais de regarder ad joda time. http://www.joda.org/joda-time/
J'avais peur d'ajouter une autre bibliothèque à mon projet épais, mais c'est juste facile et rapide et intelligent et génial. De plus, il joue bien avec le code existant, dans une certaine mesure.
Bien que je ne le recommande pas, je pense qu'il vaut la peine de souligner que bien que de nombreuses méthodes sur java.util.Date soient obsolètes, elles fonctionnent toujours. Dans des situations triviales, il peut être acceptable de les utiliser. De plus, java.util.Calendar est assez lent, donc getMonth et getYear on Date pourraient être utilement plus rapides.
import java.util.*
Vous pouvez obtenir l'heure et les minutes en utilisant le calendrier et la classe de formateur. Calendar cal = Calendar.getInstance()
et Formatter fmt=new Formatter()
et définissez un format pour l'affichage des heures et des minutes fmt.format("%tl:%M",cal,cal)
et la System.out.println(fmt)
sortie d' impression montre comme10:12
java.util.Date
,java.util.Calendar
etjava.text.SimpleDateFormat
sont maintenant héritées , supplantées par les classes java.time intégrées à Java 8 et versions ultérieures. Voir le didacticiel d'Oracle .