@Override public Argument build(Duration duration, ConfigRegistry config) { Duration d = duration; final boolean isNegative = d.isNegative(); if (isNegative) { d = d.negated(); } final long days = d.toDays(); if (days > Integer.MAX_VALUE) { throw new IllegalArgumentException( String.format("duration %s too large to be represented unambiguously as postgres interval", d)); } d = d.minusDays(days); final int hours = (int) d.toHours(); d = d.minusHours(hours); final int minutes = (int) d.toMinutes(); d = d.minusMinutes(minutes); if (d.getNano() % 1000 != 0) { throw new IllegalArgumentException( String.format("duration %s too precise to represented as postgres interval", d)); } double seconds = d.getSeconds() + d.getNano() / 1e9; final PGInterval interval = new PGInterval(0, 0, (int) days, hours, minutes, seconds); if (isNegative) { interval.scale(-1); } return ObjectArgument.of(interval, Types.OTHER); } }
/** * Supports the unary minus operator; equivalent to calling the {@link Duration#negated()} method. * * @param self a Duration * @return a Duration * @since 2.5.0 */ public static Duration negative(final Duration self) { return self.negated(); }
@Override protected Duration getEffectiveTemporalValidationTolerance(Duration absoluteTemporalValidationTolerance) { return absoluteTemporalValidationTolerance.negated(); } }
@Override protected Duration getEffectiveTemporalValidationTolerance(Duration absoluteTemporalValidationTolerance) { return absoluteTemporalValidationTolerance.negated(); } }
@Override protected Duration getEffectiveTemporalValidationTolerance(Duration absoluteTemporalValidationTolerance) { return absoluteTemporalValidationTolerance.negated(); } }
@Override protected Duration getEffectiveTemporalValidationTolerance(Duration absoluteTemporalValidationTolerance) { return absoluteTemporalValidationTolerance.negated(); } }
@Override protected Duration getEffectiveTemporalValidationTolerance(Duration absoluteTemporalValidationTolerance) { return absoluteTemporalValidationTolerance.negated(); } }
@Override protected Duration getEffectiveTemporalValidationTolerance(Duration absoluteTemporalValidationTolerance) { return absoluteTemporalValidationTolerance.negated(); } }
/** * Returns a copy of this duration with a positive length. * <p> * This method returns a positive duration by effectively removing the sign from any negative total length. * For example, {@code PT-1.3S} will be returned as {@code PT1.3S}. * <p> * This instance is immutable and unaffected by this method call. * * @return a {@code Duration} based on this duration with an absolute length, not null * @throws ArithmeticException if numeric overflow occurs */ public Duration abs() { return isNegative() ? negated() : this; }
private static Duration create(boolean negate, long daysAsSecs, long hoursAsSecs, long minsAsSecs, long secs, int nanos) { long seconds = Jdk8Methods.safeAdd(daysAsSecs, Jdk8Methods.safeAdd(hoursAsSecs, Jdk8Methods.safeAdd(minsAsSecs, secs))); if (negate) { return ofSeconds(seconds, nanos).negated(); } return ofSeconds(seconds, nanos); }
import static java.time.temporal.ChronoUnit.DAYS; import static java.time.temporal.ChronoUnit.HOURS; import static java.time.temporal.ChronoUnit.MINUTES; import static java.time.temporal.ChronoUnit.SECONDS; import java.time.Duration; public class DurationSample { public static void main(String[] args) { //Let's say duration of 2days 3hours 12minutes and 46seconds Duration d = Duration.ZERO.plus(2, DAYS).plus(3, HOURS).plus(12, MINUTES).plus(46, SECONDS); //in case of negative duration if(d.isNegative()) d = d.negated(); //format DAYS HOURS MINUTES SECONDS System.out.printf("Total duration is %sdays %shrs %smin %ssec.\n", d.toDays(), d.toHours() % 24, d.toMinutes() % 60, d.getSeconds() % 60); //or format HOURS MINUTES SECONDS System.out.printf("Or total duration is %shrs %smin %sec.\n", d.toHours(), d.toMinutes() % 60, d.getSeconds() % 60); //or format MINUTES SECONDS System.out.printf("Or total duration is %smin %ssec.\n", d.toMinutes(), d.getSeconds() % 60); //or format SECONDS only System.out.printf("Or total duration is %ssec.\n", d.getSeconds()); } }
threetenDuration = threetenDuration.negated();
@Override public Argument build(Duration duration, ConfigRegistry config) { Duration d = duration; final boolean isNegative = d.isNegative(); if (isNegative) { d = d.negated(); } final long days = d.toDays(); if (days > Integer.MAX_VALUE) { throw new IllegalArgumentException( String.format("duration %s too large to be represented unambiguously as postgres interval", d)); } d = d.minusDays(days); final int hours = (int) d.toHours(); d = d.minusHours(hours); final int minutes = (int) d.toMinutes(); d = d.minusMinutes(minutes); if (d.getNano() % 1000 != 0) { throw new IllegalArgumentException( String.format("duration %s too precise to represented as postgres interval", d)); } double seconds = d.getSeconds() + d.getNano() / 1e9; final PGInterval interval = new PGInterval(0, 0, (int) days, hours, minutes, seconds); if (isNegative) { interval.scale(-1); } return ObjectArgument.of(interval, Types.OTHER); } }
protected TemporalAmount toTemporalDuration(Duration duration) { int days = normalize(duration.getDays()); int hours = normalize(duration.getHours()); int minutes = normalize(duration.getMinutes()); int seconds = normalize(duration.getSeconds()); java.time.Duration timeDuration = java.time.Duration.ofDays(days).plusHours(hours).plusMinutes(minutes).plusSeconds(seconds); return duration.getSign() == -1 ? timeDuration.negated() : timeDuration; }
protected TemporalAmount toTemporalDuration(Duration duration) { int days = normalize(duration.getDays()); int hours = normalize(duration.getHours()); int minutes = normalize(duration.getMinutes()); int seconds = normalize(duration.getSeconds()); java.time.Duration timeDuration = java.time.Duration.ofDays(days).plusHours(hours).plusMinutes(minutes).plusSeconds(seconds); return duration.getSign() == -1 ? timeDuration.negated() : timeDuration; }
public static TemporalAmountAdapter from(Dur dur) { TemporalAmount duration; if (dur.getWeeks() > 0) { Period p = Period.ofWeeks(dur.getWeeks()); if (dur.isNegative()) { p = p.negated(); } duration = p; } else { Duration d = Duration.ofDays(dur.getDays()) .plusHours(dur.getHours()) .plusMinutes(dur.getMinutes()) .plusSeconds(dur.getSeconds()); if (dur.isNegative()) { d = d.negated(); } duration = d; } return new TemporalAmountAdapter(duration); }
public static TemporalAmountAdapter from(Dur dur) { TemporalAmount duration; if (dur.getWeeks() > 0) { Period p = Period.ofWeeks(dur.getWeeks()); if (dur.isNegative()) { p = p.negated(); } duration = p; } else { Duration d = Duration.ofDays(dur.getDays()) .plusHours(dur.getHours()) .plusMinutes(dur.getMinutes()) .plusSeconds(dur.getSeconds()); if (dur.isNegative()) { d = d.negated(); } duration = d; } return new TemporalAmountAdapter(duration); }