diff --git a/src/main/java/de/jfachwert/rechnung/Rechnungsmonat.java b/src/main/java/de/jfachwert/rechnung/Rechnungsmonat.java index d1bdeab5..b7195962 100644 --- a/src/main/java/de/jfachwert/rechnung/Rechnungsmonat.java +++ b/src/main/java/de/jfachwert/rechnung/Rechnungsmonat.java @@ -208,7 +208,7 @@ public LocalDate ersterTag() { } /** - * Diese Methode kann verwendet werden, um den ersten Arbeitstag im Monat + * Diese Methode kann verwendet werden, um den ersten Montag im Monat * zu bestimmen. Dazu ruft man diese Methode einfach mit * {@link DayOfWeek#MONDAY} als Parameter auf. * @@ -233,7 +233,24 @@ public LocalDate ersterTag(DayOfWeek wochentag) { public LocalDate letzterTag() { return getFolgemonat().ersterTag().minusDays(1); } - + + /** + * Diese Methode kann verwendet werden, um den letzten Freitag im Monat + * zu bestimmen. Dazu ruft man diese Methode einfach mit + * {@link DayOfWeek#FRIDAY} als Parameter auf. + * + * @param wochentag z.B. {@link DayOfWeek#FRIDAY} + * @return z.B. letzter Arbeitstag + * @since 0.6 + */ + public LocalDate letzterTag(DayOfWeek wochentag) { + LocalDate tag = ersterTag(); + while (tag.getDayOfWeek() != wochentag) { + tag = tag.minusDays(1); + } + return tag; + } + /** * Liefert das Rechnungsatum als {@link LocalDate} zurueck. Sollte das * Datum als {@link java.util.Date} benoetigt werden, kann man es mit diff --git a/src/test/java/de/jfachwert/rechnung/RechnungsmonatTest.java b/src/test/java/de/jfachwert/rechnung/RechnungsmonatTest.java index e8fb77fa..c0ea8078 100644 --- a/src/test/java/de/jfachwert/rechnung/RechnungsmonatTest.java +++ b/src/test/java/de/jfachwert/rechnung/RechnungsmonatTest.java @@ -129,7 +129,7 @@ public void testErsterTag() { * Test-Methode fuer {@link Rechnungsmonat#ersterTag(DayOfWeek)}. */ @Test - public void testErsterArbeitstag() { + public void testErsterMontag() { LocalDate ersterArbeitstag = FEB_2017.ersterTag(DayOfWeek.MONDAY); assertEquals(DayOfWeek.MONDAY, ersterArbeitstag.getDayOfWeek()); } @@ -142,4 +142,13 @@ public void testLetzerTag() { assertEquals(LocalDate.of(2017, 2, 28), FEB_2017.letzterTag()); } + /** + * Test-Methode fuer {@link Rechnungsmonat#letzterTag(DayOfWeek)}. + */ + @Test + public void testLetzterFreitag() { + LocalDate ersterArbeitstag = FEB_2017.letzterTag(DayOfWeek.FRIDAY); + assertEquals(DayOfWeek.FRIDAY, ersterArbeitstag.getDayOfWeek()); + } + }