.plusMinutes(minutes) .plusSeconds(seconds) .plusNanos(nanoSeconds);
.plusMinutes(interval.getMinutes()) .plusSeconds(secondsLong) .plusNanos(nanos); });
nanoSeconds = deserializeFractionalSecondsInNanos(meta, inputStream); return Duration.ofHours(hours).plusMinutes(minutes).plusSeconds(seconds).plusNanos(nanoSeconds);
/** * Returns a copy of this duration with the specified duration in nanoseconds subtracted. * <p> * This instance is immutable and unaffected by this method call. * * @param nanosToSubtract the nanoseconds to subtract, positive or negative * @return a {@code Duration} based on this duration with the specified nanoseconds subtracted, not null * @throws ArithmeticException if numeric overflow occurs */ public Duration minusNanos(long nanosToSubtract) { return (nanosToSubtract == Long.MIN_VALUE ? plusNanos(Long.MAX_VALUE).plusNanos(1) : plusNanos(-nanosToSubtract)); }
fractionalPartInNanos = fractionalPartInNanos.multiply(new BigDecimal(1000000000)); Duration result = Duration.ofSeconds(value.longValue()); result = result.plusNanos(fractionalPartInNanos.longValue()); return result;
.plusMinutes(interval.getMinutes()) .plusSeconds(secondsLong) .plusNanos(nanos); });
case NANOS: return plusNanos(amountToAdd); case MICROS: return plusSeconds((amountToAdd / (1000000L * 1000)) * 1000).plusNanos((amountToAdd % (1000000L * 1000)) * 1000); case MILLIS: return plusMillis(amountToAdd); case SECONDS: return plusSeconds(amountToAdd); return plusSeconds(duration.getSeconds()).plusNanos(duration.getNano());
String s3 = convertStringFromDuration(Duration.ofSeconds(0), settings); String s4 = convertStringFromDuration(Duration.ofSeconds(1), settings); String s5 = convertStringFromDuration(Duration.ofSeconds(1).plusNanos(2), settings); Duration m1 = convertStringToDuration("", settings); Duration m2 = convertStringToDuration(" ", settings); Duration m8 = convertStringToDuration("5.5d", settings); Duration m9 = convertStringToDuration("5.5w", settings); for (Duration duration = Duration.ofSeconds(0).plusNanos(0); duration.compareTo(Duration.ofDays(1000)) <= 0; duration = duration.plusHours(1)) {
/** * Converts {@link INTERVALDS} to {@link Duration}. * * @param dbData the data from the database to be converted, possibly {@code null} * @return the converted value, possibly {@code null} */ public static Duration intervaldsToDuration(INTERVALDS dbData) { if (dbData == null) { return null; } byte[] bytes = dbData.toBytes(); int day = toUnsignedInt(bytes[0]) << 24 | toUnsignedInt(bytes[1]) << 16 | toUnsignedInt(bytes[2]) << 8 | toUnsignedInt(bytes[3]); day ^= HIGH_BIT_FLAG; int hour = toUnsignedInt(bytes[4]) - 60; int minute = toUnsignedInt(bytes[5]) - 60; int second = toUnsignedInt(bytes[6]) - 60; int nano = toUnsignedInt(bytes[7]) << 24 | toUnsignedInt(bytes[8]) << 16 | toUnsignedInt(bytes[9]) << 8 | toUnsignedInt(bytes[10]); nano ^= HIGH_BIT_FLAG; return Duration.ofDays(day) .plusHours(hour) .plusMinutes(minute) .plusSeconds(second) .plusNanos(nano); }
/** * Converts {@link INTERVALDS} to {@link Duration}. * * @param dbData the data from the database to be converted, possibly {@code null} * @return the converted value, possibly {@code null} */ public static Duration intervaldsToDuration(INTERVALDS dbData) { if (dbData == null) { return null; } byte[] bytes = dbData.toBytes(); int day = toUnsignedInt(bytes[0]) << 24 | toUnsignedInt(bytes[1]) << 16 | toUnsignedInt(bytes[2]) << 8 | toUnsignedInt(bytes[3]); day ^= HIGH_BIT_FLAG; int hour = toUnsignedInt(bytes[4]) - 60; int minute = toUnsignedInt(bytes[5]) - 60; int second = toUnsignedInt(bytes[6]) - 60; int nano = toUnsignedInt(bytes[7]) << 24 | toUnsignedInt(bytes[8]) << 16 | toUnsignedInt(bytes[9]) << 8 | toUnsignedInt(bytes[10]); nano ^= HIGH_BIT_FLAG; return Duration.ofDays(day) .plusHours(hour) .plusMinutes(minute) .plusSeconds(second) .plusNanos(nano); }