public BiWeek(int startWeekInYear, int year) { this(new EpiWeek(year, startWeekInYear)); }
public String toString() { return startWeek.toString() + "-" + getEndWeek().getWeekInYear(); }
public EpiWeek(EpiWeek week) { this(week.getYear(), week.getWeekInYear()); }
@Override public String toString() { return toString(year, weekInYear); }
@Override public void advance(int count) { currentWeek = currentWeek.plus(count); }
@Override public PeriodValue containingDate(LocalDate localDate) { EpiWeek week = EpiWeek.weekOf(localDate); if(week.getWeekInYear() % 2 == 0) { return new FortnightValue(week.previous()); } else { return new FortnightValue(week); } }
@Override public PeriodValue parseString(String string) { return EpiWeek.parse(string); }
public static EpiWeek weekOf(LocalDate date) { LocalDate firstDayOfYear = dayOfFirstEpiWeek(date.getYear()); if(date.before(firstDayOfYear)) { return new EpiWeek(date.getYear() - 1, 52); } else { int daysBetween = LocalDate.daysBetween(firstDayOfYear, date); int weekNumber = daysBetween / 7; return new EpiWeek(date.getYear(), weekNumber + 1); } }
private static void assertDateRange(int year, int weekInYear, LocalDate startDate, LocalDate endDate) { assertEquals(new LocalDateInterval(startDate, endDate), new EpiWeek(year, weekInYear).asInterval()); }
public int getWeekInYear() { return startWeek.getWeekInYear(); } }
public int getYear() { return startWeek.getYear(); }
@Override public LocalDateInterval asInterval() { LocalDate firstDayOfYear = dayOfFirstEpiWeek(this.year); LocalDate firstDayOfWeek = firstDayOfYear.plusDays((this.weekInYear - 1) * 7); LocalDate lastDayOfWeek = firstDayOfWeek.plusDays(6); return new LocalDateInterval(firstDayOfWeek, lastDayOfWeek); }
@Override public PeriodValue containingDate(LocalDate localDate) { return EpiWeek.weekOf(localDate); } }
@Override public LocalDateInterval asInterval() { LocalDate startDate = startWeek.asInterval().getStartDate(); LocalDate endDate = startDate.plusDays(13); return new LocalDateInterval(startDate, endDate); }
public EpiWeek next() { return plus(+1); }