Wie bekomme ich das am nächsten Freitag mit Joda-Zeit API.
Das LocalDate von heute ist today. Es scheint mir, dass Sie entscheiden müssen, ob Sie vor oder nach dem Freitag der aktuellen Woche sind. Siehe diese Methode:
gute Frage… DateTime könnte ein gebrauchen rollForwardTo(...) Methode
– Skaffmann
28. Oktober 2009 um 10:00 Uhr
@skaffman Siehe meine generische RollForward-Antwort. Es ist nicht super duper getestet, scheint aber für mich zu funktionieren.
– Adam Gent
18. Juli 2012 um 3:02 Uhr
Eigentlich java.time nicht unbedingt besser Joda-Zeit. Jeder hat Eigenschaften, die dem anderen fehlen. Beispielsweise fehlt java.time die Interval Klasse gefunden in Joda-Time. Verwenden Sie also jedes für seine Stärken. Sie können innerhalb eines Projekts mischen und anpassen. Sei einfach vorsichtig mit deinem import Aussagen, da einige ihrer Klassen den gleichen Namen haben.
Nein, aber es hat sich daraus entwickelt. Hier ein Zitat von der joda time Homepage: Joda-Time ist die De-facto-Standard-Datums- und Zeitbibliothek für Java vor Java SE 8. Benutzer werden jetzt aufgefordert, auf java.time (JSR-310) zu migrieren.
– michael.kebe
27. Mai 2016 um 19:40 Uhr
FYI, die java.time Klassen sind in Java 8 und höher integriert. Ein Großteil der java.time-Funktionalität wurde in Java 6 & 7 zurückportiert ThreeTen-Backport und weiter an Android angepasst in ThreeTenABP. Siehe auch Oracle-Tutorial um mehr zu lernen.
– Basilikum Bourque
30. Juni 2016 um 0:33 Uhr
Esko
Es ist möglich, dies auf eine viel einfacher zu lesende Weise zu tun:
if (d.getDayOfWeek() < DateTimeConstants.FRIDAY) {
return d.withDayOfWeek(DateTimeConstants.FRIDAY));
} else if (d.getDayOfWeek() == DateTimeConstants.FRIDAY) {
// almost useless branch, could be merged with the one above
return d;
} else {
return d.plusWeeks(1).withDayOfWeek(DateTimeConstants.FRIDAY));
}
oder in etwas kürzerer Form
private LocalDate calcNextFriday(LocalDate d) {
if (d.getDayOfWeek() < DateTimeConstants.FRIDAY) {
d = d.withDayOfWeek(DateTimeConstants.FRIDAY));
} else {
d = d.plusWeeks(1).withDayOfWeek(DateTimeConstants.FRIDAY));
}
return d; // note that there's a possibility original object is returned
}
oder noch kürzer
private LocalDate calcNextFriday(LocalDate d) {
if (d.getDayOfWeek() >= DateTimeConstants.FRIDAY) {
d = d.plusWeeks(1);
}
return d.withDayOfWeek(DateTimeConstants.FRIDAY);
}
PS. Ich habe den eigentlichen Code nicht getestet! 🙂
oder kompilieren Sie es … “DateTimeConstans”
– David Viktor
14. September 2011 um 11:53 Uhr
Die “return”-Zeile Ihres letzten Snippets enthält ein überflüssiges “)”-Zeichen. Trotzdem danke, tolle Lösung!
Eine einfache Modulo-basierte Lösung, die mit den meisten früheren Java-Versionen funktionieren sollte, falls Sie Ihre Java-Version nicht auf Java8 oder höher aktualisieren oder eine Standard-Java-Datumsbibliothek als Jodatime verwenden dürfen
Die Anzahl der Tage, die Sie zu Ihrem Datum hinzufügen müssen, wird durch diese Formel angegeben:
Beachten Sie auch, dass dies für jeden Wochentag verallgemeinert werden kann, indem Sie das statische Feld Calendar.FRIDAY in Ihren angegebenen Wochentag ändern. Etwas Snippet-Code unten
public static void main(String[] args) {
for (int i = 0; i < 15; i++) {
Calendar cur = Calendar.getInstance();
cur.add(Calendar.DAY_OF_MONTH, i);
Calendar friday = Calendar.getInstance();
friday.setTime(cur.getTime());
friday.add(Calendar.DAY_OF_MONTH, (7 + Calendar.FRIDAY - cur.get(Calendar.DAY_OF_WEEK)) % 7);
System.out.println(MessageFormat.format("Date {0} -> {1} ", cur.getTime(), friday.getTime()));
}
}
Ja Wenn Sie Java 8 oder höher oder Jodatime verwenden, ist dies nichts für Sie. Ich habe es gesagt, aber ich war nicht klar. Vielen Dank für Ihren Kommentar.
– Breton F.
7. Dezember 2018 um 15:26 Uhr
11812900cookie-checkZeit: Wie bekomme ich den nächsten Freitag?yes
gute Frage…
DateTime
könnte ein gebrauchenrollForwardTo(...)
Methode– Skaffmann
28. Oktober 2009 um 10:00 Uhr
@skaffman Siehe meine generische RollForward-Antwort. Es ist nicht super duper getestet, scheint aber für mich zu funktionieren.
– Adam Gent
18. Juli 2012 um 3:02 Uhr
Eigentlich java.time nicht unbedingt besser Joda-Zeit. Jeder hat Eigenschaften, die dem anderen fehlen. Beispielsweise fehlt java.time die
Interval
Klasse gefunden in Joda-Time. Verwenden Sie also jedes für seine Stärken. Sie können innerhalb eines Projekts mischen und anpassen. Sei einfach vorsichtig mit deinemimport
Aussagen, da einige ihrer Klassen den gleichen Namen haben.– Basilikum Bourque
18. April 2015 um 19:38 Uhr