J'ai un objet Date en Java stocké en tant que type Date de Java.
J'ai également une date de création du calendrier grégorien. La date du calendrier grégorien n'a pas de paramètres et est donc une instance de la date (et de l'heure?) D'aujourd'hui.
Avec la date java, je veux pouvoir obtenir l'année, le mois, le jour, l'heure, la minute et les secondes du type de date java et comparer la date gregoriancalendar.
J'ai vu qu'au moment où la date Java est stockée en tant que longue et les seules méthodes disponibles semblent simplement écrire le long comme une chaîne de date formatée. Existe-t-il un moyen d'accéder à l'année, le mois, le jour, etc.?
Je vis que les getYear()
, getMonth()
etc. Les méthodes de Date
classe ont été désapprouvés. Je me demandais quelle était la meilleure pratique pour utiliser l'instance Java Date que j'ai avec la GregorianCalendar
date.
Mon objectif final est de faire un calcul de date afin que je puisse vérifier que la date Java se trouve dans autant d'heures, de minutes, etc. de la date et de l'heure d'aujourd'hui.
Je suis toujours un débutant à Java et cela me laisse un peu perplexe.
la source
Date.getYear()
. Il souffre de problèmes (que je ne sais pas).Date.getYear()
une fois analysé ma date 30/06/2017 et il est revenu mon année en tant que 117. Voyez où il a atterri, deux mille ans en arrière. Mais lorsque j'imprime simplement l'objet Date, la sortie était correcte, mais pasDate.getYear();
.Réponses:
Utilisez quelque chose comme:
Attention, les mois commencent à 0, pas à 1.
Edit : depuis Java 8, il est préférable d'utiliser java.time.LocalDate plutôt que java.util.Calendar . Voir cette réponse pour savoir comment le faire.
la source
cal.add(Calendar.DAY_OF_MONTH, -48)
pour faire l'arithmétique du jour sur les objets Calendar. Et vous pouvez comparer deux objets Calendar à l'aide decal.compareTo(anotherCal)
.Avec Java 8 et versions ultérieures, vous pouvez convertir l' objet Date en un objet LocalDate , puis obtenir facilement l'année, le mois et le jour.
Notez que
getMonthValue()
renvoie une valeur int de 1 à 12.la source
LocalDate
de Java 8 est la meilleure solution qui vous fait gagner du temps, une autre solution utilisantCalendar
etDate
est pleine de problèmes.Vous pourriez faire quelque chose comme ça, cela expliquera comment fonctionne la
Date
classe.la source
mm
indiquent les minutes, les majuscules leMM
mois de l'année.EDIT: La sortie pour
date
=Fri Jun 15 09:20:21 CEST 2018
est:la source
la source
la source
java.util.Date
,java.util.Calendar
etjava.text.SimpleDateFormat
sont désormais héritées , supplantées par les classes java.time intégrées à Java 8 et versions ultérieures. Voir Tutoriel par Oracle .getYearMonthDay2 (la solution de calendrier) est dix fois plus rapide. Maintenant, vous avez aaaa MM jj 00 00 00, puis comparez en utilisant date.compare
la source
Ça pourrait être plus facile
la source
Montez soigneusement à partir de 0 et non 1. Et utilisez également le calendrier pm comme am afin d'être très prudent lorsque vous utilisez les heures et les minutes.
la source