/** * {@inheritDoc} */ @Override public CharSequence format(final DayOfWeek dayOfWeek) { return weekDayLabels[dayOfWeek.getValue() - 1]; } }
protected LocalDate resetAndGetWorkingCalendar() { final TemporalField firstDayOfWeek = WeekFields.of(this.firstDayOfWeek, 1).dayOfWeek(); final LocalDate temp = getFirstViewDay().getDate().with(firstDayOfWeek, 1); int dow = temp.getDayOfWeek().getValue(); int delta = getFirstDayOfWeek().getValue() - dow; //If the delta is positive, we want to remove a week boolean removeRow = showOtherMonths(showOtherDates) ? delta >= 0 : delta > 0; if (removeRow) { delta -= DEFAULT_DAYS_IN_WEEK; } return temp.plusDays(delta); }
private DayOfWeekInMonth(int ordinal, DayOfWeek dow) { super(); this.ordinal = ordinal; this.dowValue = dow.getValue(); } @Override
private DayOfWeekInMonth(int ordinal, DayOfWeek dow) { super(); this.ordinal = ordinal; this.dowValue = dow.getValue(); } @Override
private RelativeDayOfWeek(int relative, DayOfWeek dayOfWeek) { Jdk8Methods.requireNonNull(dayOfWeek, "dayOfWeek"); this.relative = relative; this.dowValue = dayOfWeek.getValue(); }
private RelativeDayOfWeek(int relative, DayOfWeek dayOfWeek) { Jdk8Methods.requireNonNull(dayOfWeek, "dayOfWeek"); this.relative = relative; this.dowValue = dayOfWeek.getValue(); }
@Override public void onDateSelected(@NonNull MaterialCalendarView widget, @NonNull CalendarDay calendarDay, boolean selected) { LocalDate localDate = calendarDay.getDate(); WeekFields weekFields = WeekFields.of(Locale.getDefault()); calendarBehavior.setWeekOfMonth(localDate.get(weekFields.weekOfMonth())); if (selected) { dayOfWeek = localDate.getDayOfWeek().getValue(); dayOfMonth = localDate.getDayOfMonth(); } } });
@Override public long getLong(TemporalField field) { if (field instanceof ChronoField) { switch ((ChronoField) field) { case DAY_OF_WEEK: return dayOfWeek.getValue(); case ALIGNED_DAY_OF_WEEK_IN_MONTH: return ((dayOfMonth - 1) % 7) + 1; case ALIGNED_DAY_OF_WEEK_IN_YEAR: return ((dayOfYear - 1) % 7) + 1; case DAY_OF_MONTH: return this.dayOfMonth; case DAY_OF_YEAR: return this.dayOfYear; case EPOCH_DAY: return toEpochDay(); case ALIGNED_WEEK_OF_MONTH: return ((dayOfMonth - 1) / 7) + 1; case ALIGNED_WEEK_OF_YEAR: return ((dayOfYear - 1) / 7) + 1; case MONTH_OF_YEAR: return monthOfYear; case YEAR_OF_ERA: return yearOfEra; case YEAR: return yearOfEra; case ERA: return era.getValue(); } throw new UnsupportedTemporalTypeException("Unsupported field: " + field); } return field.getFrom(this); }
@Override public long getLong(TemporalField field) { if (field instanceof ChronoField) { switch ((ChronoField) field) { case DAY_OF_WEEK: return dayOfWeek.getValue(); case ALIGNED_DAY_OF_WEEK_IN_MONTH: return ((dayOfMonth - 1) % 7) + 1; case ALIGNED_DAY_OF_WEEK_IN_YEAR: return ((dayOfYear - 1) % 7) + 1; case DAY_OF_MONTH: return this.dayOfMonth; case DAY_OF_YEAR: return this.dayOfYear; case EPOCH_DAY: return toEpochDay(); case ALIGNED_WEEK_OF_MONTH: return ((dayOfMonth - 1) / 7) + 1; case ALIGNED_WEEK_OF_YEAR: return ((dayOfYear - 1) / 7) + 1; case MONTH_OF_YEAR: return monthOfYear; case YEAR_OF_ERA: return yearOfEra; case YEAR: return yearOfEra; case ERA: return era.getValue(); } throw new UnsupportedTemporalTypeException("Unsupported field: " + field); } return field.getFrom(this); }
private int get0(TemporalField field) { switch ((ChronoField) field) { case DAY_OF_WEEK: return getDayOfWeek().getValue(); case ALIGNED_DAY_OF_WEEK_IN_MONTH: return ((day - 1) % 7) + 1; case ALIGNED_DAY_OF_WEEK_IN_YEAR: return ((getDayOfYear() - 1) % 7) + 1; case DAY_OF_MONTH: return day; case DAY_OF_YEAR: return getDayOfYear(); case EPOCH_DAY: throw new DateTimeException("Field too large for an int: " + field); case ALIGNED_WEEK_OF_MONTH: return ((day - 1) / 7) + 1; case ALIGNED_WEEK_OF_YEAR: return ((getDayOfYear() - 1) / 7) + 1; case MONTH_OF_YEAR: return month; case PROLEPTIC_MONTH: throw new DateTimeException("Field too large for an int: " + field); case YEAR_OF_ERA: return (year >= 1 ? year : 1 - year); case YEAR: return year; case ERA: return (year >= 1 ? 1 : 0); } throw new UnsupportedTemporalTypeException("Unsupported field: " + field); }
private int get0(TemporalField field) { switch ((ChronoField) field) { case DAY_OF_WEEK: return getDayOfWeek().getValue(); case ALIGNED_DAY_OF_WEEK_IN_MONTH: return ((day - 1) % 7) + 1; case ALIGNED_DAY_OF_WEEK_IN_YEAR: return ((getDayOfYear() - 1) % 7) + 1; case DAY_OF_MONTH: return day; case DAY_OF_YEAR: return getDayOfYear(); case EPOCH_DAY: throw new DateTimeException("Field too large for an int: " + field); case ALIGNED_WEEK_OF_MONTH: return ((day - 1) / 7) + 1; case ALIGNED_WEEK_OF_YEAR: return ((getDayOfYear() - 1) / 7) + 1; case MONTH_OF_YEAR: return month; case PROLEPTIC_MONTH: throw new DateTimeException("Field too large for an int: " + field); case YEAR_OF_ERA: return (year >= 1 ? year : 1 - year); case YEAR: return year; case ERA: return (year >= 1 ? 1 : 0); } throw new UnsupportedTemporalTypeException("Unsupported field: " + field); }
@Override public long getFrom(TemporalAccessor temporal) { // Offset the ISO DOW by the start of this week int sow = weekDef.getFirstDayOfWeek().getValue(); int isoDow = temporal.get(ChronoField.DAY_OF_WEEK); int dow = Jdk8Methods.floorMod(isoDow - sow, 7) + 1; if (rangeUnit == ChronoUnit.WEEKS) { return dow; } else if (rangeUnit == ChronoUnit.MONTHS) { int dom = temporal.get(ChronoField.DAY_OF_MONTH); int offset = startOfWeekOffset(dom, dow); return computeWeek(offset, dom); } else if (rangeUnit == ChronoUnit.YEARS) { int doy = temporal.get(ChronoField.DAY_OF_YEAR); int offset = startOfWeekOffset(doy, dow); return computeWeek(offset, doy); } else if (rangeUnit == IsoFields.WEEK_BASED_YEARS) { return localizedWOWBY(temporal); } else if (rangeUnit == ChronoUnit.FOREVER) { return localizedWBY(temporal); } else { throw new IllegalStateException("unreachable"); } }
private int localizedWBY(TemporalAccessor temporal) { int sow = weekDef.getFirstDayOfWeek().getValue(); int isoDow = temporal.get(DAY_OF_WEEK); int dow = Jdk8Methods.floorMod(isoDow - sow, 7) + 1; int year = temporal.get(YEAR); long woy = localizedWeekOfYear(temporal, dow); if (woy == 0) { return year - 1; } else if (woy < 53) { return year; } int offset = startOfWeekOffset(temporal.get(DAY_OF_YEAR), dow); int yearLen = Year.isLeap(year) ? 366 : 365; int weekIndexOfFirstWeekNextYear = computeWeek(offset, yearLen + weekDef.getMinimalDaysInFirstWeek()); if (woy >= weekIndexOfFirstWeekNextYear) { return year + 1; } return year; }
@Override public ValueRange rangeRefinedBy(TemporalAccessor temporal) { if (rangeUnit == ChronoUnit.WEEKS) { return range; } TemporalField field = null; if (rangeUnit == ChronoUnit.MONTHS) { field = ChronoField.DAY_OF_MONTH; } else if (rangeUnit == ChronoUnit.YEARS) { field = ChronoField.DAY_OF_YEAR; } else if (rangeUnit == IsoFields.WEEK_BASED_YEARS) { return rangeWOWBY(temporal); } else if (rangeUnit == ChronoUnit.FOREVER) { return temporal.range(YEAR); } else { throw new IllegalStateException("unreachable"); } // Offset the ISO DOW by the start of this week int sow = weekDef.getFirstDayOfWeek().getValue(); int isoDow = temporal.get(ChronoField.DAY_OF_WEEK); int dow = Jdk8Methods.floorMod(isoDow - sow, 7) + 1; int offset = startOfWeekOffset(temporal.get(field), dow); ValueRange fieldRange = temporal.range(field); return ValueRange.of(computeWeek(offset, (int) fieldRange.getMinimum()), computeWeek(offset, (int) fieldRange.getMaximum())); }
private int localizedWBY(TemporalAccessor temporal) { int sow = weekDef.getFirstDayOfWeek().getValue(); int isoDow = temporal.get(DAY_OF_WEEK); int dow = Jdk8Methods.floorMod(isoDow - sow, 7) + 1; int year = temporal.get(YEAR); long woy = localizedWeekOfYear(temporal, dow); if (woy == 0) { return year - 1; } else if (woy < 53) { return year; } int offset = startOfWeekOffset(temporal.get(DAY_OF_YEAR), dow); int yearLen = Year.isLeap(year) ? 366 : 365; int weekIndexOfFirstWeekNextYear = computeWeek(offset, yearLen + weekDef.getMinimalDaysInFirstWeek()); if (woy >= weekIndexOfFirstWeekNextYear) { return year + 1; } return year; }
private int localizedWOWBY(TemporalAccessor temporal) { int sow = weekDef.getFirstDayOfWeek().getValue(); int isoDow = temporal.get(DAY_OF_WEEK); int dow = Jdk8Methods.floorMod(isoDow - sow, 7) + 1; long woy = localizedWeekOfYear(temporal, dow); if (woy == 0) { ChronoLocalDate previous = Chronology.from(temporal).date(temporal).minus(1, ChronoUnit.WEEKS); return (int) localizedWeekOfYear(previous, dow) + 1; } else if (woy >= 53) { int offset = startOfWeekOffset(temporal.get(DAY_OF_YEAR), dow); int year = temporal.get(YEAR); int yearLen = Year.isLeap(year) ? 366 : 365; int weekIndexOfFirstWeekNextYear = computeWeek(offset, yearLen + weekDef.getMinimalDaysInFirstWeek()); if (woy >= weekIndexOfFirstWeekNextYear) { return (int) (woy - (weekIndexOfFirstWeekNextYear - 1)); } } return (int) woy; }
private int localizedWOWBY(TemporalAccessor temporal) { int sow = weekDef.getFirstDayOfWeek().getValue(); int isoDow = temporal.get(DAY_OF_WEEK); int dow = Jdk8Methods.floorMod(isoDow - sow, 7) + 1; long woy = localizedWeekOfYear(temporal, dow); if (woy == 0) { ChronoLocalDate previous = Chronology.from(temporal).date(temporal).minus(1, ChronoUnit.WEEKS); return (int) localizedWeekOfYear(previous, dow) + 1; } else if (woy >= 53) { int offset = startOfWeekOffset(temporal.get(DAY_OF_YEAR), dow); int year = temporal.get(YEAR); int yearLen = Year.isLeap(year) ? 366 : 365; int weekIndexOfFirstWeekNextYear = computeWeek(offset, yearLen + weekDef.getMinimalDaysInFirstWeek()); if (woy >= weekIndexOfFirstWeekNextYear) { return (int) (woy - (weekIndexOfFirstWeekNextYear - 1)); } } return (int) woy; }
private ValueRange rangeWOWBY(TemporalAccessor temporal) { int sow = weekDef.getFirstDayOfWeek().getValue(); int isoDow = temporal.get(DAY_OF_WEEK); int dow = Jdk8Methods.floorMod(isoDow - sow, 7) + 1; long woy = localizedWeekOfYear(temporal, dow); if (woy == 0) { return rangeWOWBY(Chronology.from(temporal).date(temporal).minus(2, ChronoUnit.WEEKS)); } int offset = startOfWeekOffset(temporal.get(DAY_OF_YEAR), dow); int year = temporal.get(YEAR); int yearLen = Year.isLeap(year) ? 366 : 365; int weekIndexOfFirstWeekNextYear = computeWeek(offset, yearLen + weekDef.getMinimalDaysInFirstWeek()); if (woy >= weekIndexOfFirstWeekNextYear) { return rangeWOWBY(Chronology.from(temporal).date(temporal).plus(2, ChronoUnit.WEEKS)); } return ValueRange.of(1, weekIndexOfFirstWeekNextYear - 1); }
private ValueRange rangeWOWBY(TemporalAccessor temporal) { int sow = weekDef.getFirstDayOfWeek().getValue(); int isoDow = temporal.get(DAY_OF_WEEK); int dow = Jdk8Methods.floorMod(isoDow - sow, 7) + 1; long woy = localizedWeekOfYear(temporal, dow); if (woy == 0) { return rangeWOWBY(Chronology.from(temporal).date(temporal).minus(2, ChronoUnit.WEEKS)); } int offset = startOfWeekOffset(temporal.get(DAY_OF_YEAR), dow); int year = temporal.get(YEAR); int yearLen = Year.isLeap(year) ? 366 : 365; int weekIndexOfFirstWeekNextYear = computeWeek(offset, yearLen + weekDef.getMinimalDaysInFirstWeek()); if (woy >= weekIndexOfFirstWeekNextYear) { return rangeWOWBY(Chronology.from(temporal).date(temporal).plus(2, ChronoUnit.WEEKS)); } return ValueRange.of(1, weekIndexOfFirstWeekNextYear - 1); }
@Override public HijrahDate with(TemporalField field, long newValue) { if (field instanceof ChronoField) { ChronoField f = (ChronoField) field; f.checkValidValue(newValue); // TODO: validate value int nvalue = (int) newValue; switch (f) { case DAY_OF_WEEK: return plusDays(newValue - dayOfWeek.getValue()); case ALIGNED_DAY_OF_WEEK_IN_MONTH: return plusDays(newValue - getLong(ALIGNED_DAY_OF_WEEK_IN_MONTH)); case ALIGNED_DAY_OF_WEEK_IN_YEAR: return plusDays(newValue - getLong(ALIGNED_DAY_OF_WEEK_IN_YEAR)); case DAY_OF_MONTH: return resolvePreviousValid(yearOfEra, monthOfYear, nvalue); case DAY_OF_YEAR: return resolvePreviousValid(yearOfEra, ((nvalue - 1) / 30) + 1, ((nvalue - 1) % 30) + 1); case EPOCH_DAY: return new HijrahDate(nvalue); case ALIGNED_WEEK_OF_MONTH: return plusDays((newValue - getLong(ALIGNED_WEEK_OF_MONTH)) * 7); case ALIGNED_WEEK_OF_YEAR: return plusDays((newValue - getLong(ALIGNED_WEEK_OF_YEAR)) * 7); case MONTH_OF_YEAR: return resolvePreviousValid(yearOfEra, nvalue, dayOfMonth); case YEAR_OF_ERA: return resolvePreviousValid(yearOfEra >= 1 ? nvalue : 1 - nvalue, monthOfYear, dayOfMonth); case YEAR: return resolvePreviousValid(nvalue, monthOfYear, dayOfMonth); case ERA: return resolvePreviousValid(1 - yearOfEra, monthOfYear, dayOfMonth); } throw new UnsupportedTemporalTypeException("Unsupported field: " + field); } return field.adjustInto(this, newValue); }