@Override public int getDayOfMonth() { return this.date.getDayOfMonth(); }
@Override public LocalDate from(PlainDate date) { return LocalDate.of(date.getYear(), date.getMonth(), date.getDayOfMonth()); }
private long monthDelta( PlainDate start, PlainDate end ) { long amount = (end.getEpochMonths() - start.getEpochMonths()); if ( (this.policy == POLICY_KEEPING_LAST_DATE) || (this.policy == POLICY_END_OF_MONTH) || (this.policy == POLICY_JODA_METRIC) ) { CalendarUnit u = CalendarUnit.MONTHS; if ((amount > 0) && PlainDate.doAdd(u, start, amount, this.policy).isAfter(end)) { amount--; } else if ((amount < 0) && PlainDate.doAdd(u, start, amount, this.policy).isBefore(end)) { amount++; } } else { if ((amount > 0) && (end.getDayOfMonth() < start.getDayOfMonth())) { amount--; } else if ((amount < 0) && (end.getDayOfMonth() > start.getDayOfMonth())) { amount++; } } return amount; }
header2 |= date.getDayOfMonth(); out.writeByte(header2);
return PlainDate.DAY_OF_YEAR; } else if (max.getDayOfMonth() < date.getDayOfMonth()) { return PlainDate.DAY_OF_MONTH; return PlainDate.DAY_OF_YEAR; } else if (min.getDayOfMonth() > date.getDayOfMonth()) { return PlainDate.DAY_OF_MONTH;
this.owner.isYearRelated() ? date.getDayOfYear() : date.getDayOfMonth()); Weekday wd = getDayOfWeek(date.getDaysSinceUTC() - scaledDay + 1); int dow = wd.getValue(this.owner.getModel());
private int getCalendarWeek(PlainDate date) { int scaledDay = ( this.owner.isYearRelated() ? date.getDayOfYear() : date.getDayOfMonth()); int wCurrent = getFirstCalendarWeekAsDay(date, 0); if (wCurrent <= scaledDay) { int result = ((scaledDay - wCurrent) / 7) + 1; if ( (result >= 53) || (!this.owner.isYearRelated() && (result >= 5)) ) { int wNext = getFirstCalendarWeekAsDay(date, 1) + getLengthOfYM(date, 0); if (wNext <= scaledDay) { result = 1; } } return result; } else { int wPrevious = getFirstCalendarWeekAsDay(date, -1); int dayCurrent = scaledDay + getLengthOfYM(date, -1); return ((dayCurrent - wPrevious) / 7) + 1; } }
private <T extends ChronoEntity<T>> T doApply(T entity) { if (entity.contains(PlainDate.CALENDAR_DATE)) { PlainDate date = entity.get(PlainDate.CALENDAR_DATE); Weekday current = date.get(PlainDate.DAY_OF_WEEK); int delta = this.dayOfWeek.getValue() - current.getValue(); int dom = date.getDayOfMonth() + delta; long days; if (this.ordinal == LAST) { days = (5L - (Math.floorDiv(dom - 1, 7) + 1)) * 7 + delta; int max = GregorianMath.getLengthOfMonth(date.getYear(), date.getMonth()); if (date.getDayOfMonth() + days > max) { days -= 7; } } else { days = (this.ordinal - (Math.floorDiv(dom - 1, 7) + 1)) * 7 + delta; } date = date.plus(days, CalendarUnit.DAYS); return entity.with(PlainDate.CALENDAR_DATE, date); } else { throw new ChronoException( "Rule not found for ordinal day of week in month: " + entity); } }
private int getMaxCalendarWeek(PlainDate date) { int scaledDay = ( this.owner.isYearRelated() ? date.getDayOfYear() : date.getDayOfMonth()); int wCurrent = getFirstCalendarWeekAsDay(date, 0); if (wCurrent <= scaledDay) { int wNext = getFirstCalendarWeekAsDay(date, 1) + getLengthOfYM(date, 0); if (wNext <= scaledDay) { // reference date points to next week cycle try { int wStart = getFirstCalendarWeekAsDay(date, 1); wNext = getFirstCalendarWeekAsDay(date, 2) + getLengthOfYM(date, 1); wCurrent = wStart; } catch (RuntimeException re) { wNext += 7; // theoretical rare edge case near the end of time axis } } return (wNext - wCurrent) / 7; } else { int wPrevious = getFirstCalendarWeekAsDay(date, -1); wCurrent = wCurrent + getLengthOfYM(date, -1); return (wCurrent - wPrevious) / 7; } }
int year = date.getYear(); int month = date.getMonth(); final int dom = date.getDayOfMonth(); final boolean allowHalfMonths = (this.estimateSize() < 180) && (dom <= 15);