Ich habe ein lokales Datum, das den ersten und letzten Tag des Monats abrufen muss. Wie mache ich das?
z.B. 13/2/2014
Ich muss 1/2/2014
und 28/2/2014
in LocalDate- Formaten.
Verwenden der threeten LocalDate-Klasse.
Ich habe ein lokales Datum, das den ersten und letzten Tag des Monats abrufen muss. Wie mache ich das?
z.B. 13/2/2014
Ich muss 1/2/2014
und 28/2/2014
in LocalDate- Formaten.
Verwenden der threeten LocalDate-Klasse.
Verwenden Sie einfach withDayOfMonth
und lengthOfMonth()
:
LocalDate initial = LocalDate.of(2014, 2, 13);
LocalDate start = initial.withDayOfMonth(1);
LocalDate end = initial.withDayOfMonth(initial.lengthOfMonth());
Die API wurde entwickelt, um eine Lösung zu unterstützen, die den Geschäftsanforderungen genau entspricht
Jons Lösungen sind jedoch auch in Ordnung.
quelle
YearMonth
Der Vollständigkeit halber und meiner Meinung nach eleganter, siehe diese Verwendung der
YearMonth
Klasse.Für den ersten und letzten Tag des aktuellen Monats lautet dies:
quelle
LocalDate
with
Methode?LocalDate
Instanz.Die Antwort von Jon Skeets ist richtig und hat meine Zustimmung verdient, der Vollständigkeit halber nur diese etwas andere Lösung hinzugefügt:
quelle
Wenn jemand nach dem ersten Tag des Vormonats und dem letzten Tag des Vormonats sucht :
quelle
quelle
Sie können dies versuchen, um zu vermeiden, dass ein benutzerdefiniertes Datum angegeben wird und Start- und Enddaten des aktuellen Monats angezeigt werden müssen:
Ergebnis:
quelle
Versuche dies:
Sie können die gewünschte Ausgabe finden, müssen sich jedoch um den Parameter true / false für die Methode getLastDayOfMonth kümmern
Dieser Parameter bezeichnet das Schaltjahr
quelle
getLastDayOfMonth
- siehe meine Antwort für einen einfacheren Ansatz.Wenn Sie dies nur mit der LocalDate-Klasse tun möchten:
quelle
Nur hier, um meine Implementierung für die @ herman-Lösung zu zeigen
quelle
LocalDateTime
ist genau die falsche Klasse, die hier verwendet wird. Sie verwerfen wertvolle Zonen- / Versatzinformationen.Date
hat nichts mit der Frage zu tun und sollte generell vermieden werden.ZoneId.of("America/La_Paz")
. Für heutige Daten wird es das gleiche Ergebnis geben, aber möglicherweise nicht für historische Daten oder Daten in einer weiteren Zukunft.