/** * <p>Determines Saturday and Sunday as non-business days. </p> * * @return HolidayModel */ /*[deutsch] * <p>Bestimmt Samstag oder Sonntag als arbeitsfreie Tage. </p> * * @return HolidayModel */ static HolidayModel ofSaturdayOrSunday() { return date -> { Weekday wd = date.getDayOfWeek(); return ((wd == Weekday.SATURDAY) || (wd == Weekday.SUNDAY)); }; }
@Override public Weekday getValue(T context) { return context.get(CALENDAR_DATE).getDayOfWeek(); }
@Override public List<ChronoInterval<PlainTime>> getPartition(PlainDate date) { if (!this.isExcluded(date) && activeFilter.test(date)) { List<ChronoInterval<PlainTime>> partitions = eRules.get(date); if (partitions == null) { partitions = wRules.get(date.getDayOfWeek()); } if (partitions != null) { return Collections.unmodifiableList(partitions); } } return Collections.emptyList(); } @Override
@Override public V getValue(PlainDate context) { Object ret; switch (this.index) { case EnumElement.MONTH: ret = Month.valueOf(context.month); break; case EnumElement.DAY_OF_WEEK: ret = context.getDayOfWeek(); break; case EnumElement.QUARTER_OF_YEAR: ret = Quarter.valueOf(((context.month - 1) / 3) + 1); break; default: throw new UnsupportedOperationException(this.name); } return this.type.cast(ret); }
@Override public SpanOfWeekdays createFrom( TimeSource<?> clock, AttributeQuery attributes ) { PlainDate date = PlainDate.axis().createFrom(clock, attributes); if (date == null) { return null; } else { Weekday dow = date.getDayOfWeek(); return SpanOfWeekdays.between(dow, dow); } }
@Override public Weekday getMinimum(T context) { PlainDate date = context.get(CALENDAR_DATE); int oldNum = date.getDayOfWeek().getValue(this.element.getModel()); if (date.getDaysSinceEpochUTC() + 1 - oldNum < PlainDate.axis().getCalendarSystem().getMinimumSinceUTC()) { return PlainDate.MIN.getDayOfWeek(); } return this.element.getDefaultMinimum(); }
@Override public Weekday getMaximum(T context) { PlainDate date = context.get(CALENDAR_DATE); int oldNum = date.getDayOfWeek().getValue(this.element.getModel()); if (date.getDaysSinceEpochUTC() + 7 - oldNum > PlainDate.axis().getCalendarSystem().getMaximumSinceUTC()) { return PlainDate.MAX.getDayOfWeek(); } return this.element.getDefaultMaximum(); }
private PlainDate withDayOfWeek(Weekday dayOfWeek) { Weekday old = this.getDayOfWeek(); PlainDate date = ( (this.weekday == null) ? new PlainDate(this.year, this.month, this.dayOfMonth, old) : this); if (old == dayOfWeek) { return date; } return PlainDate.addDays(date, dayOfWeek.getValue() - old.getValue()); }
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); }
int startDOW = startDate.getDayOfWeek().getValue(); int endDOW = endDate.getDayOfWeek().getValue();
@Override public T addTo( T entity, long amount ) { if (amount == 0) { return entity; } int yow = MathUtils.safeCast( MathUtils.safeAdd( entity.get(YOWElement.INSTANCE).intValue(), amount) ); PlainDate date = entity.get(CALENDAR_DATE); int woy = date.getWeekOfYear(); Weekday dow = date.getDayOfWeek(); if (woy == 53) { PlainDate test = PlainDate.of(yow, 26, dow); woy = test.getMaximum(Weekmodel.ISO.weekOfYear()); } return entity.with( CALENDAR_DATE, PlainDate.of(yow, woy, dow)); }
Weekday newWD = this.current.getDayOfWeek().roll((int) (dateEpoch - this.startEpoch + 1)); this.startEpoch = dateEpoch + 1;