Erster Tag des nächsten Monats mit Java Joda-Time
Wie würden Sie schreiben Sie die Methode unten, der gibt den ersten Tag des nächsten Monats, mit der org.joda.time
Paket in Joda-Time?
public static Date firstDayOfNextMonth() {
Calendar nowCal = Calendar.getInstance();
int month = nowCal.get(Calendar.MONTH) + 1;
int year = nowCal.get(Calendar.YEAR);
Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month);
cal.set(Calendar.DAY_OF_MONTH, 1);
Date dueDate = new Date(cal.getTimeInMillis());
return dueDate;
}
Kommentar zu dem Problem
Werden carefule mit der
nowCal.get(Calendar.MONAT) + 1
wenn der aktuelle Monat Dezember ist. warum gehst du nicht akzeptieren, eine Antwort?
InformationsquelleAutor der Frage Mat B. | 2011-01-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Etwas einfacher und sauberer, nicht wahr? 🙂
Update: Wenn Sie wieder ein Datum:
aber ich empfehle Ihnen dringend zu vermeiden, das mischen reinen DATUMS-Typen (D. H. einen Tag im Kalender, ohne Informationen) mit DATETIME-Typen, speziell mit einer "physischen" datetime-Typ wie die abscheulichen
java.util.Date
. Es ist so etwas wie das konvertieren von integer-und floating-Arten, müssen Sie vorsichtig sein.InformationsquelleAutor der Antwort leonbloy
Ich gehe davon aus, die Sie zurückgeben möchten ein Date-Objekt, also:
InformationsquelleAutor der Antwort delfuego
Joda-Time
Hier ist mein nehmen auf dieses problem, mit Joda-Time 2.3.
Unveränderlich
In der Regel sollten Sie die unveränderlich Versionen der Joda-Time-Klassen. Fast alle Methoden geben eine neue Instanz einer
DateTime
, anstatt zu ändern vorhandene Instanz. Vereinfacht die Dinge und macht Sie für die automatische thread-Sicherheit.Start-Of-Day -
Verwenden Sie die neuere Methode
withTimeAtStartOfDay()
eher als Einstellung der Uhrzeit auf null. Weil der Daylight Saving Time (DST) und andere Anomalien, die auf einige Tage sich in einigen Zeitzonen gibt es keine oder Mitternacht 00:00:00 Zeit des Tages.Konvertieren: j.u.Datum ↔ DateTime
Übersetzen ein Joda-Time
DateTime
Instanz zu einer java.util.Datum Instanz, rufen Sie einfachaktuelle
Methode. Keine Notwendigkeit für Konstruktor auf Termin.Gehen den anderen Weg, wenn Sie hava java.util.Datum und wollen ein Joda-Time DateTime, übergeben Sie einfach das Datum an den Konstruktor von DateTime-zusammen mit dem gewünschten
DateTimeZone
Objekt.Beispiel-Code
Oder, wenn Sie sind ein Wahnsinniger, Zeichenfolge, die alle zusammen in eine einzige Zeile code.
Übersetzen zu einem alten java.util.Datum für die Interaktion mit anderen Klassen/Bibliotheken.
Dump in die Konsole...
Beim laufen...
java.Zeit
Den java.Zeit framework in Java 8 und später verdrängt die alten java.util.Datum/.Kalender-Klassen. Inspiriert von Joda-Time, und bestimmt seinen Nachfolger.
Diese neuen Klassen gehören der
TemporalAdjuster
- Schnittstelle (Tutorial) mit einer Reihe von Implementierungen inTemporalAdjusters
(beachten Sie den plurals
). Passiert haben nur die Einsteller, die wir brauchen:firstDayOfNextMonth
.Dump in die Konsole.
Wenn Sie möchten, eine Datum-Zeit eher als Datum-nur, passen.
Wenn Sie müssen, verwenden Sie die alten java.util.Datum für den Betrieb mit den alten Klassen noch nicht aktualisiert auf java.Zeit, konvertieren von einem
Instant
extrahiert aus der ZonedDateTime Objekt. Ein Augenblick ist ein moment auf der Zeitachse in UTC.Über java.Zeit
Den java.Zeit framework ist in Java 8 und höher. Diese Klassen verdrängen die lästige alte Vermächtnis Datum-Zeit-Klassen wie
java.util.Date
,Calendar
, &" = SimpleDateFormat
.Den Joda-Time Projekt, jetzt in Wartungsmodus, rät der migration auf die java.Zeit Klassen.
Um mehr zu erfahren, siehe die Oracle Tutorial. Und die Suche Stack Overflow für viele Beispiele und Erklärungen. Spezifikation JSR 310.
Können Sie exchange java.Zeit Objekte direkt mit Ihrer Datenbank. Verwenden Sie eine JDBC-Treiber kompatibel mit JDBC 4.2 oder später. Keine Notwendigkeit für Streicher, keine Notwendigkeit für
java.sql.*
Klassen.Wo erhalten Sie die java.Zeit-Klassen?
Den ThreeTen-Extra Projekt erweitert die java.mal mit zusätzlicher Klassen. Dieses Projekt ist ein Testgelände für mögliche künftige Erweiterungen zu java.Zeit. Sie finden möglicherweise einige nützliche Klassen, die hier wie
Interval
,YearWeek
,YearQuarter
, und mehr.InformationsquelleAutor der Antwort Basil Bourque
es ist eine Methode, für die, die in Joda-API:
Hoffe, es hilft!
InformationsquelleAutor der Antwort avaz
dasselbe wie zuvor, aber konvertiert auch zu java.util.Datum
Datum firstDayOfNextMonth = (new LocalDate().plusMonths(1).withDayOfMonth(1)).toDate();
InformationsquelleAutor der Antwort simonC
localDate = new LocalDate().plusMonths(1).withDayOfMonth(1);
InformationsquelleAutor der Antwort Tomasz Krzyżak
ich bin nicht sicher wenn 'ich' die Frage richtig, aber hier ist mein Versuch :D..
mag nur nicht, fügen Sie die +1 Monat???
InformationsquelleAutor der Antwort BaajiRao