private Object readWeekmodel( DataInput in, byte header ) throws IOException { int data = in.readByte(); Weekday firstDayOfWeek = Weekday.valueOf(data >> 4); int minimalDaysInFirstWeek = (data & 0xF); Weekday startOfWeekend = Weekday.SATURDAY; Weekday endOfWeekend = Weekday.SUNDAY; if ((header & 0xF) == 1) { data = in.readByte(); startOfWeekend = Weekday.valueOf(data >> 4); endOfWeekend = Weekday.valueOf(data & 0xF); } return Weekmodel.of( firstDayOfWeek, minimalDaysInFirstWeek, startOfWeekend, endOfWeekend ); }
/** * <p>Equivalent to the expression * {@code getDisplayName(locale, TextWidth.WIDE, OutputContext.FORMAT)}. * </p> * * @param locale language setting * @return descriptive text (long form, never {@code null}) * @see #getDisplayName(Locale, TextWidth, OutputContext) */ /*[deutsch] * <p>Entspricht dem Ausdruck * {@code getDisplayName(locale, TextWidth.WIDE, OutputContext.FORMAT)}. * </p> * * @param locale language setting * @return descriptive text (long form, never {@code null}) * @see #getDisplayName(Locale, TextWidth, OutputContext) */ public String getDisplayName(Locale locale) { return this.getDisplayName( locale, TextWidth.WIDE, OutputContext.FORMAT); }
@Override public int numerical(Weekday dayOfWeek) { return dayOfWeek.getValue(Weekmodel.this); }
/** * <p>Rolls this day of week by given amount of days. </p> * * @param days count of days (maybe negative) * @return result of rolling operation */ /*[deutsch] * <p>Rollt um die angegebene Anzahl von Tagen vor oder zurück. </p> * * @param days count of days (maybe negative) * @return result of rolling operation */ public Weekday roll(int days) { return Weekday.valueOf((this.ordinal() + (days % 7 + 7)) % 7 + 1); }
@Override public Weekday getMinimum(SpanOfWeekdays context) { if (this.symbol == 'S') { return context.end.next(); } else { return context.start; } }
private static PlainDate addDays( PlainDate date, long amount ) { long dom = MathUtils.safeAdd(date.dayOfMonth, amount); Weekday weekday = null; boolean hasDOW = (date.weekday != null); if (hasDOW) { if (amount == 1) { weekday = date.weekday.next(); } else if (amount == 7) { weekday = date.weekday; } } if ((dom >= 1) && (dom <= 28)) { if (hasDOW && (weekday == null)) { weekday = date.weekday.roll((int) amount); } return PlainDate.create(date.year, date.month, (int) dom, weekday, false); } long doy = MathUtils.safeAdd(date.getDayOfYear(), amount); if ((doy >= 1) && (doy <= 365)) { if (hasDOW && (weekday == null)) { weekday = date.weekday.roll((int) amount); } return PlainDate.ofYearDay(date.year, (int) doy, weekday); } return TRANSFORMER.transform(MathUtils.safeAdd(date.getDaysSinceUTC(), amount)); }
/** * <p>Rolls to the previous day of week. </p> * * <p>The result is Sunday if this method is applied on Monday. </p> * * @return previous weekday */ /*[deutsch] * <p>Ermittelt den vorherigen Wochentag. </p> * * <p>Auf den Montag angewandt ist das Ergebnis der Sonntag. </p> * * @return previous weekday */ public Weekday previous() { return this.roll(-1); }
/** * <p>Gets the corresponding numerical ISO-value. </p> * * @return {@code monday=1, tuesday=2, wednesday=3, thursday=4, friday=5, saturday=6, sunday=7} * @see #valueOf(int) * @see Weekmodel#ISO */ /*[deutsch] * <p>Liefert den korrespondierenden kalendarischen Integer-Wert * entsprechend der ISO-8601-Norm. </p> * * @return {@code monday=1, tuesday=2, wednesday=3, thursday=4, friday=5, saturday=6, sunday=7} * @see #valueOf(int) * @see Weekmodel#ISO */ public int getValue() { return (this.ordinal() + 1); }
/** * <p>Defines the hash value. </p> */ /*[deutsch] * <p>Liefert den Hash-Code. </p> */ @Override public int hashCode() { return ( 17 * this.firstDayOfWeek.name().hashCode() + 37 * this.minimalDaysInFirstWeek ); }
/** * <p>Ermittelt die Anzahl der Tage, die zu dieser Wochentagsspanne gehören. </p> * * @return count of days in range {@code 1-7} */ public int length() { int days = 1; Weekday current = this.start; while (current != this.end) { days++; current = current.next(); } return days; }
@Override public Weekday getDefaultMaximum() { return Weekmodel.this.getFirstDayOfWeek().roll(6); }
/** * <p>Rolls to the next day of week. </p> * * <p>The result is Monday if this method is applied on Sunday. </p> * * @return next weekday */ /*[deutsch] * <p>Ermittelt den nächsten Wochentag. </p> * * <p>Auf den Sonntag angewandt ist das Ergebnis der Montag. </p> * * @return next weekday */ public Weekday next() { int index = this.ordinal() + 1; if (index == 7) { index = 0; } return ENUMS[index]; }
/** * <p>Ermittelt den Wochentag. </p> * * @param utcDays count of days relative to [1972-01-01] * @return day of week as enum */ static Weekday getDayOfWeek(long utcDays) { return Weekday.valueOf(MathUtils.floorModulo(utcDays + 5, 7) + 1); }
LastWeekdayPattern( Month month, Weekday dayOfWeek, PlainTime timeOfDay, OffsetIndicator indicator, int savings ) { super(month, timeOfDay, indicator, savings); this.dayOfWeek = (byte) dayOfWeek.getValue(); }
@Override public Iterator<Weekday> iterator() { List<Weekday> days = new ArrayList<>(7); days.add(this.start); Weekday current = this.start; while (current != this.end) { current = current.next(); days.add(current); } return days.iterator(); }
Weekday newWD = this.current.getDayOfWeek().roll((int) (dateEpoch - this.startEpoch + 1)); this.startEpoch = dateEpoch + 1;