private PlainDate setCalendarWeek( PlainDate date, int value ) { int old = this.getCalendarWeek(date); if (value == old) { return date; } else { int delta = 7 * (value - old); return date.withDaysSinceUTC(date.getDaysSinceUTC() + delta); } }
private PlainDate setWeek( PlainDate date, int value ) { int old = this.getWeek(date); if (value == old) { return date; } else { int delta = 7 * (value - old); return date.withDaysSinceUTC(date.getDaysSinceUTC() + delta); } }
@Override public T withValue( T context, Weekday value, boolean lenient ) { if (value == null) { throw new IllegalArgumentException("Missing weekday."); } PlainDate date = context.get(CALENDAR_DATE); long utcDays = date.getDaysSinceUTC(); Weekday current = getDayOfWeek(utcDays); if (value == current) { return context; } int old = current.getValue(this.element.getModel()); int neu = value.getValue(this.element.getModel()); date = date.withDaysSinceUTC(utcDays + neu - old); return context.with(CALENDAR_DATE, date); }
private static PlainDate setYearOfWeekdate( PlainDate date, int value ) { int dowCurrent = getFirstCalendarWeekAsDayOfYear(value); int weekOfYear = getWeekOfYear(date); int dayOfWeek = date.getDayOfWeek().getValue(Weekmodel.ISO); long unixDays = EpochDays.UNIX.transform( GregorianMath.toMJD(value, 1, 1), EpochDays.MODIFIED_JULIAN_DATE) + (dowCurrent - 1) + (weekOfYear - 1) * 7 + (dayOfWeek - 1); if (weekOfYear == 53) { int wNext = getFirstCalendarWeekAsDayOfYear(value + 1) + (GregorianMath.isLeapYear(value) ? 366 : 365); if (((wNext - dowCurrent) / 7) < 53) { unixDays -= 7; // weekOfYear = 52 } } return date.withDaysSinceUTC(unixDays - 2 * 365); }