Java calendrier d'obtenir la date courante, sans les heures, les minutes, les secondes et les millisecondes, en millisecondes
Je voudrais obtenir la date actuelle en millisecondes avec seulement l'année, le mois et la date. Mais lorsque j'utilise ce code:
Calendar cal = Calendar.getInstance();
cal.clear(Calendar.HOUR);
cal.clear(Calendar.MINUTE);
cal.clear(Calendar.SECOND);
cal.clear(Calendar.MILLISECOND);
currentDate = cal.getTimeInMillis();
Je reçois toujours le temps en millisecondes avec l'heure.
Comment puis-je résoudre ce problème?
Vous devez vous connecter pour publier un commentaire.
Attention sur le fuseau horaire de votre Calendrier.
Si vous ne souhaitez que cela par rapport à l'heure GMT et explicitement veux juste millisecondes, vous pouvez utiliser ceci:
de la javadoc:
Le HOUR_OF_DAY, l'HEURE et le AM_PM champs sont traités indépendamment et de la résolution de la règle pour le moment de la journée est appliqué. De compensation de l'un des champs n'est pas réinitialiser les heures de la journée de la valeur de ce Calendrier. L'utilisation de set(Calendrier.HOUR_OF_DAY, 0) pour réinitialiser la valeur de l'heure.
pourriez avoir besoin pour régler AM/PM ainsi
tl;dr
LocalDate
Si ce que vous voulez est en fait juste la date, sans le temps, l'utilisation
LocalDate
classe.La
LocalDate
classe représente une date uniquement de la valeur, sans le temps de la journée et sans fuseau horaire.Un fuseau horaire est crucial dans la détermination d'une date. Pour un moment donné, la date varie à travers le monde par zone. Par exemple, quelques minutes après minuit dans Paris, France est un nouveau jour, alors encore “hier” dans Montréal, Québec.
Spécifier un fuseau horaire nom dans le format de
continent/region
, commeAmerica/Montreal
,Africa/Casablanca
, ouPacific/Auckland
. Ne jamais utiliser de l'3-4 abréviation commeEST
ouIST
comme ils sont pas vrai fuseaux horaires, pas normalisée, et même pas unique(!).ZonedDateTime
Si vous voulez une date avec l'heure du jour le premier moment de la journée, demandez à java.le temps de déterminer ce moment pour vous. Ne supposez pas le premier moment est à 00:00:00. Les Anomalies telles que l'Heure d'été signifie tout moment peut se produire à un autre moment comme 01:00:00.
Utiliser le fuseau horaire de l'objet, de la
ZoneId
, pour générer unZonedDateTime
objet.Pour afficher ce même moment, comme une valeur en UTC, extrait d'un
Instant
objet.Éviter héritage de date-heure classes
Éviter le pénible de longue date du temps des classes comme
Calendar
. Ceux-ci sont désormais héritage, supplanté par le java.les classes de temps.Sur java.temps
La java.le temps cadre est intégré dans Java 8 et les versions ultérieures. Ces classes permettent d'éviter la pénible vieux héritage date du temps des classes comme
java.util.Date
,Agenda
, &SimpleDateFormat
.La Joda-Time projet, maintenant dans le mode de maintenance, conseille la migration vers le java.le temps classes.
Pour en savoir plus, consultez les Oracle Tutoriel. Et de recherche de Débordement de Pile pour de nombreux exemples et des explications. La spécification est JSR 310.
Où obtenir le java.les classes de temps?
La ThreeTen-Extra projet s'étend java.temps avec d'autres classes. Ce projet est un terrain d'essai pour de possibles futurs ajouts à java.temps. Vous pouvez trouver quelques classes utiles ici comme
Intervalle
,YearWeek
,YearQuarter
, et plus.Si vous souhaitez utiliser Joda time: