@Override public PlainTime plusPeriod( PlainTime timepoint, String period, ParseLog plog, AttributeQuery attributes ) { try { return timepoint.plus(Duration.parseClockPeriod(period)); } catch (ParseException ex) { return null; } }
) { return this.plus(Math.negateExact(amount), unit);
time = time.plus(hour * 60 + minute, ClockUnit.MINUTES); } else { throw new IllegalStateException("Invalid time key: " + key);
|| (this.element == DIGITAL_HOUR_OF_AMPM) ) { return context.plus( MathUtils.safeSubtract(value, context.getInt(this.element)), ClockUnit.HOURS); } else if (this.element == MINUTE_OF_HOUR) { return context.plus( MathUtils.safeSubtract(value, context.minute), ClockUnit.MINUTES); } else if (this.element == SECOND_OF_MINUTE) { return context.plus( MathUtils.safeSubtract(value, context.second), ClockUnit.SECONDS); } else if (this.element == MILLI_OF_SECOND) { return context.plus( MathUtils.safeSubtract( value, context.get(MILLI_OF_SECOND)), ClockUnit.MILLIS); } else if (this.element == MICRO_OF_SECOND) { return context.plus( MathUtils.safeSubtract( value, context.get(MICRO_OF_SECOND)), ClockUnit.MICROS); } else if (this.element == NANO_OF_SECOND) { return context.plus( MathUtils.safeSubtract(value, context.nano), ClockUnit.NANOS);
@Override public PlainTimestamp translate(java.sql.Timestamp source) { long millis = source.getTime(); // UTC zone if (!WITH_SQL_UTC_CONVERSION) { Moment unixTime = Moment.of( MathUtils.floorDivide(millis, 1000), TimeScale.POSIX); ZonalOffset offset = Timezone.ofSystem().getOffset(unixTime); millis += offset.getIntegralAmount() * 1000; } PlainDate date = PlainDate.of( MathUtils.floorDivide(millis, 86400 * 1000), EpochDays.UNIX); PlainTime time = PlainTime.of(0).plus( MathUtils.floorModulo(millis, 86400 * 1000), ClockUnit.MILLIS); PlainTimestamp ts = PlainTimestamp.of(date, time); return ts.with(PlainTime.NANO_OF_SECOND, source.getNanos()); }
/** * <p>Yields the length of this interval. </p> * * @return duration in hours, minutes, seconds and nanoseconds * @since 2.0 */ /*[deutsch] * <p>Liefert die Länge dieses Intervalls. </p> * * @return duration in hours, minutes, seconds and nanoseconds * @since 2.0 */ public Duration<ClockUnit> getDuration() { PlainTime t1 = this.getTemporalOfClosedStart(); PlainTime t2 = this.getEnd().getTemporal(); if (this.getEnd().isClosed()) { if (t2.getHour() == 24) { if (t1.equals(PlainTime.midnightAtStartOfDay())) { return Duration.of(24, HOURS).plus(1, NANOS); } else { t1 = t1.minus(1, NANOS); } } else { t2 = t2.plus(1, NANOS); } } return Duration.inClockUnits().between(t1, t2); }