Ich brauche, um zu überprüfen, ob ein bestimmter timestamp ist heute. Ich bin mit Joda-Time. Gibt es eine Methode oder eine einfache Möglichkeit, dies zu überprüfen? Was Joda-Time-Klasse ist besser geeignet dafür? LocalDate? DateTime?
Was Joda-time-Klasse ist besser geeignet dafür? LocalDate? DateTime?
Dem Verständnis, das Sie brauchen, zu wissen, was LocalDate und DateTime.
LocalDate() ist eine unveränderliche datetime-Klasse, die ein Datum ohne
die Zeitzone. So wird nicht mit einem mal Teil.
DateTime() ist die standard-Implementierung eines unmodifiable datetime
Klasse. Weil Sie alle Attribute des Datums, der umfasst date, time und timezone.
Also, wenn Sie brauchen, um zu vergleichen, sowohl das Datum und die Zeit besser gehen mit datetime, wenn Sie müssen nur überprüfen Sie das Datum müssen Sie localDate da die datetime erzeugt eine false wenn ein .equal - operator verwendet, es sei denn, die Uhrzeit inklusive der Sekunden Teil sind die gleichen für beide Objekte.
Warum erstellen Sie eine neue DateTime, würde es nicht ausreichen, mit ein LocalDate? if((dateTime.toLocalDate()).equals(new LocalDate()))
Ich konnte nur dieser Ansatz für die Arbeit mit .isEqual() statt .equals() für version 2.0.
toLocalDate macht keinen Sinn für die Lesbarkeit wenn. Sollte dies nicht sein toDateWithoutTime oder so?
Eine Möglichkeit ist, erstellen Sie ein Intervall für den gesamten Tag in Frage, und dann prüfen, ob die verschiedenen Zeitstempel enthalten sind in diesem Intervall.
Bau der ersten Intervall könnte wie folgt Aussehen:
AFAIK gibt es keine direkte Methode zur Verfügung, durch die Sie überprüfen können, ist das Datum Heute ist oder nicht.
Der einfachste Ansatz wird sein, den Bau von zwei DateTime man mit dem Zeitstempel, und ein weiteres mit heutigen Datum und dann den Vergleich Tag von dayOfYear() und Jahr aus year() aber denken Sie daran, ob beide Termin sind in UTC oder in Local Time Zone.
Hier ein kleines Beispiel,
DateTime date =newDateTime(TimeStamp);DateTime todayDate =newDateTime();if(date.dayOfYear().get()== todayDate.dayOfYear().get()&& date.year().get()== todayDate.year().get()){System.out.println("Date is today date");}
Datum verglichen werden können einzelne Anweisung also warum brauchen Sie eine spezielle Funktion.
wenn
dateTime
ist ein Objekt derDateTime()
wenn
date
ist ein Objekt derjava.util.date
Was Joda-time-Klasse ist besser geeignet dafür? LocalDate? DateTime?
Dem Verständnis, das Sie brauchen, zu wissen, was LocalDate und DateTime.
Also, wenn Sie brauchen, um zu vergleichen, sowohl das Datum und die Zeit besser gehen mit
datetime
, wenn Sie müssen nur überprüfen Sie das Datum müssen SielocalDate
da die datetime erzeugt einefalse
wenn ein.equal
- operator verwendet, es sei denn, die Uhrzeit inklusive der Sekunden Teil sind die gleichen für beide Objekte..isEqual()
statt.equals()
für version 2.0.Hier sind einige einfache Methoden, um zu überprüfen, ob ein DateTime-heute, morgen oder gestern:
Eine Möglichkeit ist, erstellen Sie ein Intervall für den gesamten Tag in Frage, und dann prüfen, ob die verschiedenen Zeitstempel enthalten sind in diesem Intervall.
Bau der ersten Intervall könnte wie folgt Aussehen:
Dann der Zeitstempel könnte geprüft werden, etwa so:
Ist der empfohlene Weg, dies zu tun wäre:
Ich glaube, Sie brauchen Joda 2.5 um dies zu tun, aber das sollte den trick tun.
AFAIK gibt es keine direkte Methode zur Verfügung, durch die Sie überprüfen können, ist das Datum Heute ist oder nicht.
Der einfachste Ansatz wird sein, den Bau von zwei
DateTime
man mit dem Zeitstempel, und ein weiteres mit heutigen Datum und dann den Vergleich Tag vondayOfYear()
und Jahr ausyear()
aber denken Sie daran, ob beide Termin sind inUTC
oder inLocal Time Zone
.Hier ein kleines Beispiel,
Joda Zeit tatsächlich eine Methode dafür:
DateUtils
imjoda
. Es gibt eineDateTimeUtils
aber, dass nicht über eine MethodeisToday
Ich wie @JustinMorris Antwort. Aber ich fand es noch besser:
Einfachste Weg, die ich gefunden habe: