PlainDate ls = PlainDate.of(2015, 6, 30); Moment start = ls.atStartOfDay().atUTC(); Moment end = ls.plus(1, CalendarUnit.DAYS).atStartOfDay().atUTC(); System.out.println(SI.SECONDS.between(start, end)); // 86401
/** * <p>Creates a new local timestamp with this date at midnight at the * begin of associated day. </p> * * @return local timestamp as composition of this date and midnight * @see #at(PlainTime) */ /*[deutsch] * <p>Erzeugt einen lokalen Zeitstempel mit diesem Datum zu Mitternacht * am Beginn des Tages. </p> * * @return local timestamp as composition of this date and midnight * @see #at(PlainTime) */ public PlainTimestamp atStartOfDay() { return this.at(PlainTime.MIN); }
private PlainDate withDayOfYear(int dayOfYear) { if (this.getDayOfYear() == dayOfYear) { return this; } return PlainDate.of(this.year, dayOfYear); }
@Override public boolean contains(ChronoInterval<PlainDate> other) { if (!other.isFinite()) { return false; } PlainDate startA = this.getStart().getTemporal(); PlainDate startB = other.getStart().getTemporal(); if (other.getStart().isOpen()) { if (startB.equals(PlainDate.axis().getMaximum())) { return false; } startB = startB.plus(1, CalendarUnit.DAYS); } if (startA.isAfter(startB)) { return false; } PlainDate endA = this.getEnd().getTemporal(); PlainDate endB = other.getEnd().getTemporal(); if (other.getEnd().isOpen()) { if (startB.isSimultaneous(endB)) { return !startB.isAfter(endA); } else if (endB.equals(PlainDate.axis().getMinimum())) { return false; } endB = endB.minus(1, CalendarUnit.DAYS); } return !endA.isBefore(endB); }
PlainDate date = PlainDate.of(dateEpoch, EpochDays.UTC); int year = date.getYear(); int month = date.getMonth(); final int dom = date.getDayOfMonth(); final boolean allowHalfMonths = (this.estimateSize() < 180) && (dom <= 15); Weekday newWD = this.current.getDayOfWeek().roll((int) (dateEpoch - this.startEpoch + 1)); this.startEpoch = dateEpoch + 1; this.current = PlainDate.of(year, month, 16); } else { month++; month = 1; this.current = PlainDate.of(year, month, 1); this.current = this.current.with(PlainDate.DAY_OF_WEEK, newWD); // trigger day-of-week-optimization return split;
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); } }
@Override public boolean isBefore(ChronoInterval<PlainDate> other) { if (other.getStart().isInfinite()) { return false; } PlainDate endA = this.getEnd().getTemporal(); PlainDate startB = other.getStart().getTemporal(); if (other.getStart().isOpen()) { if (startB.equals(PlainDate.axis().getMaximum())) { return true; } startB = startB.plus(1, CalendarUnit.DAYS); } return endA.isBefore(startB); }
@Override public CalendarMonth createFrom( TemporalAccessor threeten, AttributeQuery attributes ) { if (threeten.query(TemporalQueries.chronology()) == IsoChronology.INSTANCE) { if (threeten.isSupported(ChronoField.YEAR)) { if (threeten.isSupported(ChronoField.MONTH_OF_YEAR)) { Leniency leniency = attributes.get(Attributes.LENIENCY, Leniency.SMART); int year = threeten.get(ChronoField.YEAR); int month = threeten.get(ChronoField.MONTH_OF_YEAR); if (leniency.isLax()) { PlainDate date = PlainDate.of(year, 1, 1); date = date.with(PlainDate.MONTH_AS_NUMBER.setLenient(month)); return CalendarMonth.of(date.getYear(), date.getMonth()); } else { return CalendarMonth.of(year, month); } } } } return null; }
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; }
@Override public PlainDate getDate(int year) { int month = this.getMonthValue(); int ref = GregorianMath.getDayOfWeek(year, month, this.dayOfMonth); PlainDate result = PlainDate.of(year, month, this.dayOfMonth); if (ref == this.dayOfWeek) { return result; } int delta = (ref - this.dayOfWeek); int sgn = -1; if (this.after) { delta = -delta; sgn = 1; } if (delta < 0) { delta += 7; } return result.plus(delta * sgn, DAYS); }
@Override public boolean tryAdvance(Consumer<? super PlainDate> action) { if (this.current == null) { return false; } action.accept(this.current); if (this.startEpoch == this.endEpoch) { this.current = null; } else { this.current = this.current.plus(1, CalendarUnit.DAYS); } this.startEpoch++; return true; }
private PlainDate withDayOfMonth(int dayOfMonth) { if (this.dayOfMonth == dayOfMonth) { return this; } return PlainDate.of(this.year, this.month, dayOfMonth); }
/** * <p>Converts given gregorian date to a quarter year. </p> * * @param date gregorian calendar date (for example {@code PlainDate} * @return CalendarQuarter * @throws IllegalArgumentException if given date is invalid * @since 3.28/4.24 */ /*[deutsch] * <p>Konvertiert das angegebene gregorianische Datum zu einem Kalenderquartal. </p> * * @param date gregorian calendar date (for example {@code PlainDate} * @return CalendarQuarter * @throws IllegalArgumentException if given date is invalid * @since 3.28/4.24 */ public static CalendarQuarter from(GregorianDate date) { PlainDate iso = PlainDate.from(date); // includes validation return CalendarQuarter.of(iso.getYear(), iso.get(PlainDate.QUARTER_OF_YEAR)); }
Object enumValue = date.get(this.getElement()); int oldOrdinal = Enum.class.cast(enumValue).ordinal(); int newOrdinal = this.delta(oldOrdinal); return entity.with( PlainDate.CALENDAR_DATE, date.plus( (newOrdinal - oldOrdinal), date.getChronology().getBaseUnit(this.getElement())) );
@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 LocalDate from(PlainDate date) { return LocalDate.of(date.getYear(), date.getMonth(), date.getDayOfMonth()); }
Date jud = TemporalType.JAVA_UTIL_DATE.from(date.atStartOfDay().atUTC()); text = this.setUpLocal().format(jud); } else if (this.type.equals(PlainTime.class)) { PlainTime time = PlainTime.class.cast(formattable); Date jud = TemporalType.JAVA_UTIL_DATE.from(UNIX_EPOCH_DATE.at(time).atUTC()); text = this.setUpLocal().format(jud); } else if (this.type.equals(PlainTimestamp.class)) {