private void writeWeekmodel(DataOutput out) throws IOException { Weekmodel wm = (Weekmodel) this.obj; boolean isoWeekend = ( (wm.getStartOfWeekend() == Weekday.SATURDAY) && (wm.getEndOfWeekend() == Weekday.SUNDAY) ); int header = WEEKMODEL_TYPE; header <<= 4; if (!isoWeekend) { header |= 1; } out.writeByte(header); int state = wm.getFirstDayOfWeek().getValue(); state <<= 4; state |= wm.getMinimalDaysInFirstWeek(); out.writeByte(state); if (!isoWeekend) { state = wm.getStartOfWeekend().getValue(); state <<= 4; state |= wm.getEndOfWeekend().getValue(); out.writeByte(state); } }
/** * <p>Determines a country-specific weekend as non-business days. </p> * * @param country locale with country information * @return HolidayModel * @see Weekmodel#weekend() */ /*[deutsch] * <p>Bestimmt ein länderspezifisches Wochenende als arbeitsfreie Tage. </p> * * @param country locale with country information * @return HolidayModel * @see Weekmodel#weekend() */ static HolidayModel ofWeekend(Locale country) { return date -> date.matches(Weekmodel.of(country).weekend()); }
private Object readResolve() throws ObjectStreamException { Weekmodel model = this.getModel(); switch (this.category) { case CALENDAR_WEEK_OF_YEAR: return model.weekOfYear(); case CALENDAR_WEEK_OF_MONTH: return model.weekOfMonth(); case BOUNDED_WEEK_OF_YEAR: return model.boundedWeekOfYear(); case BOUNDED_WEEK_OF_MONTH: return model.boundedWeekOfMonth(); default: throw new InvalidObjectException( "Unknown category: " + this.category); } }
@Override public Set<ChronoElement<?>> getElements( Locale locale, AttributeQuery attributes ) { return Weekmodel.of(locale).getElements(); }
Locale yemen = new Locale("ar", "YE"); Weekmodel model = Weekmodel.of(yemen); System.out.println( "Weekend: " + model.getStartOfWeekend() + " - " + model.getEndOfWeekend() ); // Weekend: THURSDAY - FRIDAY PlainDate today = SystemClock.inLocalView().today(); System.out.println(today.isWeekend(yemen));
private ChronoElement<?> getChild() { return Weekmodel.ISO.weekOfYear(); }
) { return Weekmodel.of( firstDayOfWeek, minimalDaysInFirstWeek,
&& entity.contains(Weekmodel.ISO.weekOfYear()) ) { int weekOfYear = entity.get(Weekmodel.ISO.weekOfYear()).intValue(); Weekday dayOfWeek; } else if (entity.contains(Weekmodel.ISO.localDayOfWeek())) { dayOfWeek = entity.get(Weekmodel.ISO.localDayOfWeek()); } else { return null;
/** * <p>Gets the first working day as first day after end of weekend. </p> * * <p>Note: The last working day of week is not well defined however * and needs to be defined by the application itself. For example * Saturday is considered as start of weekend but also handled as legal * working day in most countries. </p> * * @return first day after weekend */ /*[deutsch] * <p>Ermittelt den ersten Arbeitstag als den Tag nach dem Ende des * Wochenendes. </p> * * <p>Hinweis: Der letzte Arbeitstag der Woche als Gegenstück * zu dieser Methode ist in der Regel nicht eindeutig und daher von * Anwendungen selbst festzulegen. Zum Beispiel gilt in vielen Ländern * der Samstag zwar als der Start des Wochenendes, wird aber trotzdem * gesetzlich als Werktag behandelt. </p> * * @return first day after weekend */ public Weekday getFirstWorkday() { return this.getEndOfWeekend().next(); }
? date.getDayOfYear() : date.getDayOfMonth()); Weekday wd = getDayOfWeek(date.getDaysSinceUTC() - scaledDay + 1); int dow = wd.getValue(this.owner.getModel()); (dow <= 8 - this.owner.getModel().getMinimalDaysInFirstWeek()) ? 2 - dow : 9 - dow
@Override protected boolean doEquals(BasicElement<?> obj) { return this.getModel().equals(((DayOfWeekElement) obj).getModel()); }
@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); }
return new Weekmodel( firstDayOfWeek, minimalDaysInFirstWeek,
/** * <p>Liefert die ISO-Kalenderwoche des Jahres. </p> * * <p>Als erste Kalenderwoche gilt die Woche, die mindestens vier Tage hat * und mit dem Montag anfängt. Die Woche davor ist dann die letzte * Woche des vorherigen Jahres und kann noch in das aktuelle Jahr * hineinreichen. </p> * * @return week of year in the range (1-53) * @see Weekmodel#ISO */ int getWeekOfYear() { return this.get(Weekmodel.ISO.weekOfYear()).intValue(); }
/** * <p>Gets a suitable weekmodel for the default locale of system. </p> * * <p>Note: In order to get a weekend definition deviating from the * standard Saturday + Sunday, the i18n-module must be present in * classpath since v2.2. </p> * * @return week model in system locale * @see Locale#getDefault() */ /*[deutsch] * <p>Ermittelt ein geeignetes Wochenmodell für die aktuelle * Landeseinstellung des Systems. </p> * * <p>Hinweis: Damit eine von Samstag und Sonntag abweichende * lokalisierte Wochenenddefinition erzeugt werden kann, muß * seit Version v2.2 das i18n-Modul im Klassenpfad vorhanden sein. </p> * * @return week model in system locale * @see Locale#getDefault() */ public static Weekmodel ofSystem() { return Weekmodel.of(Locale.getDefault(Locale.Category.FORMAT)); }
@Override protected boolean doEquals(BasicElement<?> obj) { return this.getModel().equals(((CalendarWeekElement) obj).getModel()); }
@Override public PlainDate transform(long utcDays) { if (utcDays == MIN_LONG) { return PlainDate.MIN; } else if (utcDays == MAX_LONG) { return PlainDate.MAX; } long mjd = EpochDays.MODIFIED_JULIAN_DATE.transform(utcDays, EpochDays.UTC); long packedDate = GregorianMath.toPackedDate(mjd); return PlainDate.create( GregorianMath.readYear(packedDate), GregorianMath.readMonth(packedDate), GregorianMath.readDayOfMonth(packedDate), Weekmodel.getDayOfWeek(utcDays), false); }
/** * <p>Converts given gregorian date to a calendar week. </p> * * @param date gregorian calendar date (for example {@code PlainDate} * @return CalendarWeek * @throws IllegalArgumentException if given date is invalid * @since 3.28/4.24 */ /*[deutsch] * <p>Konvertiert das angegebene gregorianische Datum zu einer Kalenderwoche. </p> * * @param date gregorian calendar date (for example {@code PlainDate} * @return CalendarWeek * @throws IllegalArgumentException if given date is invalid * @since 3.28/4.24 */ public static CalendarWeek from(GregorianDate date) { PlainDate iso = PlainDate.from(date); // includes validation return CalendarWeek.of(iso.getInt(PlainDate.YEAR_OF_WEEKDATE), iso.getInt(Weekmodel.ISO.weekOfYear())); }
/** * <p>Does this date fall on a week-end in given country? </p> * * @param country country setting with two-letter ISO-3166-code * @return {@code true} if in given country this date is on weekend * else {@code false} * @see Weekmodel#weekend() */ /*[deutsch] * <p>Liegt das Datum im angegebenen Land an einem Wochenende? </p> * * @param country country setting with two-letter ISO-3166-code * @return {@code true} if in given country this date is on weekend * else {@code false} * @see Weekmodel#weekend() */ public boolean isWeekend(Locale country) { return this.matches(Weekmodel.of(country).weekend()); }