Vergleichen von Datumswerten in Java - nur Jahre, Monate und Tage
Ich versuche zu vergleichen, die zu Datums-Objekt. Nur ein problem ist, dass ich vergleichen will, nur Tage, Monat und Jahre.
/* toString output
mydate 2013-08-23
current date: Thu Aug 23 14:15:34 CEST 2013
Wenn ich Vergleiche nur wenige Tage ( 23-08-2013 ) Termine sind, gleich, wenn ich mit .nach() .vor () - Methoden
Termine sind anders.
Ist, gibt es Java-Methode vergleicht nur Tage, Monat, Jahre einfach Weg oder muss ich zum vergleichen jeden Wert ?
Verwenden Sie Joda Time.
Poste bitte den code, die Sie verwenden! Es könnte scheinen, einfach für Sie, aber wir sind wirklich kämpfen, um zu beantworten, wenn Sie nicht nach einem minimal-Beispiel (MWE)!
Nur analysieren und es in eine
seien Sie vorsichtig mit der Zeitzone zu!
hält Kopf und weint leise, dass
Poste bitte den code, die Sie verwenden! Es könnte scheinen, einfach für Sie, aber wir sind wirklich kämpfen, um zu beantworten, wenn Sie nicht nach einem minimal-Beispiel (MWE)!
Nur analysieren und es in eine
Calendar
und legen Sie dann die Stunden/Minuten/Sekunden auf null.seien Sie vorsichtig mit der Zeitzone zu!
hält Kopf und weint leise, dass
java.sql.Date
kommt zuerst in autocompleteInformationsquelleAutor kingkong | 2013-08-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies funktioniert perfekt.........
InformationsquelleAutor piyush
Wenn Sie nicht möchten, dass für die Verwendung von externen Bibliotheken, und es gibt kein problem mit dem Kalender, die Sie könnten versuchen, so etwas wie dieses:
Nicht so einfach, aber ist etwas...
Bei der Instanziierung
Calendar
initialisiert wird, um das aktuelle Datum bereits, also fürcurrentCalendar
Einstellung Zeit zucurrentDate
ist unnötig.Dies funktioniert nicht 100% der Zeit. Hatte ein Anwendungsfall, wo ich das Tat, und den Kalender.getTime() würde noch zurück, die Zeit mit den Stunden festgelegt, wie die parameter Datum. Am besten deaktivieren Sie die Felder, und legen nur das Jahr, Monat und Tag diejenigen.
InformationsquelleAutor Pl4yeR
Leider, Datum-Unterstützung in den core-Java-API ist sehr schwach. Könnten Sie
Calendar
Streifen Uhrzeit/Zeitzone Informationen von Ihrem Datum. Sie würde wahrscheinlich wollen, schreiben Sie eine eigene Methode, das zu tun. Sie könnten auch den Joda-API für Datums - /Zeit-Unterstützung, es ist viel besser als Java ist.InformationsquelleAutor Eric Stein
Joda-Time ist viel besser und sehr zu empfehlen. Aber wenn Sie Java-api, die Sie tun können-
Sagen zu vergleichen, nur das Jahr, die Sie tun können-
etc.
Man sollte nicht mit überholten Methoden.
Keine veralteten Methoden verwendet wurden.
Die Lösung zu diesem problem, vorausgesetzt, man beginnt mit Datum-Objekte, die die zwei Momente, die verglichen werden sollen, durchgeführt werden kann ausschließlich mit integer-Arithmetik.
Nach Ihrer Logik, das gesamte problem zu schreiben, der Java-Programme kann erreicht werden, indem die Programmierung Assembler-Sprache. Wir Menschen verwenden Abstraktionen zu helfen, in unserem denken. Bearbeitung von Datums-Zeit mit einer Anzahl von Epoche ist nach ärger. Für eine Sache, es gibt viele verschiedene Epochen. Zum anderen gibt es verschiedene Zählungen: Sekunden in Unix, Millisekunden in java.util.Datum & Joda-Time in Nanosekunden in java.Datum Paket, und Mikrosekunden in anderen. Noch ein weiteres: die überprüfung und debugging-Graf-von-Epoche-Werte ist schwierig.
InformationsquelleAutor Sajal Dutta
InformationsquelleAutor user3360429
Nein, es gibt nichts in der JDK. Sie könnte verwenden einige externe Bibliothek als Apache Commons Lang. Es ist eine Methode,
DateUtils.isSameDay(Date, Date)
das tun würde, was Sie suchen.Besser wäre zu vermeiden, um das
Date
von Java und nutzen zum Beispiel JodaTime.Wenn Sie sprechen über Ihre Antwort. Ich finde es nicht einfach. Und ich kenne keine Methode, wie
isSameDay
im JDK.Der Punkt ist, dass die Behauptung, "Nein, es gibt nichts in der JDK" ist falsch.
InformationsquelleAutor LaurentG
tl;dr
Wenn Sie möchten, erfassen Sie das aktuelle Datum dynamisch.
Oder für einen bestimmten moment.
LocalDate
Die gebündelte java.util.Datum und .Kalender-Klassen sind notorisch lästig. Um Sie zu vermeiden. Wie die anderen Antworten vorgeschlagen, verwenden Sie eine anständige date-time-Bibliothek. Das bedeutet, daß entweder:
LocalDate Klasse
LocalDate Klasse
Müssen Sie extrahieren eine nur-Datum-Wert aus dem Datum und der Uhrzeit, zu ignorieren, die time-of-Tag. Beide Joda-Time und java.Zeit haben eine solche Klasse, die zufällig benannte
LocalDate
.java.Zeit
Den java.Zeit framework in Java 8 und später verdrängt die alten java.util.Datum/.Kalender-Klassen. Die neuen Klassen sind inspiriert von der sehr erfolgreichen Joda-Time Rahmen, vorgesehen als seine Nachfolger, ähnlich im Konzept, aber re-architected. Definiert durch JSR 310. Erweitert durch die ThreeTen-Extra Projekt. Finden Sie die Tutorial.
Extrahieren und vergleichen Sie die Datum-nur Teil des date-Aufruf
toLocalDate
.Joda-Time
Testen der Gleichheit von dem Datum Teil, konvertieren Sie die DateTime-Objekte zu einem
LocalDate
, die beschreibt, nur ein Datum ohne Uhrzeit oder Zeitzone (andere als eine Zeitzone entscheiden, auf das Datum).Wenn Sie möchten zu prüfen die konstituierenden Elemente, Joda-Time bietet Methoden wie dayOfMonth, hourOfDay, und mehr.
InformationsquelleAutor Basil Bourque
Wie über diese Art
InformationsquelleAutor Ruchira Gayan Ranaweera
Können Sie versuchen, diese
InformationsquelleAutor Evgeniy Dorofeev
Mithilfe
Date
nurInformationsquelleAutor Rakesh KR
Die Lösung für dieses problem ist erstaunlich einfach. Sie müssen damit beginnen, analysieren Sie Ihre Datum-Zeit-strings in Datum Augenblicke in der Java-API (Sie können ein " = SimpleDateFormat-Objekt, um Ihnen zu helfen dies zu tun).
Wenn Sie zwei Augenblicke in der Zeit, dargestellt als Termine:
Presto!
Eine Methode zur Anpassung eines Date-Objekt, das die lokale Zeit-und Rückgabe als dezimale Anzahl der Tage in der POSIX-Epoche folgt:
Diese Methode nimmt ein Date-Objekt
d
, und eine Java-API Calendar-Objektgc
wurde konstruiert, mit der lokalen Zeitzone des Interesses.InformationsquelleAutor scottb
Beispiel für den Einsatz von Java-Kalender zu vergleichen, nur das Datum Teile zwischen 2 calendar-Objekte ohne clear () - alle anderen Kalender-Felder (MINUTEN, MILLISEKUNDEN, usw.), die wird gesetzt, wenn die Kalender.getInstance() aufgerufen wird.
Ich weiß, dieser thread ist alt, und das ist nicht eine neue Lösung, aber vielleicht helfen, einige Leute.
java.util.Date
,java.util.Calendar
, undjava.text.SimpleDateFormat
sind jetzt legacy, überlagert von der java.Zeit Klassen gebaut in Java 8 und höher. Siehe Einführung Oracle.Diese Antwort scheint, zu wiederholen, die Inhalte von anderen, wie dieser.
InformationsquelleAutor T_G