< prev index next >

src/java.base/share/classes/java/time/Duration.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 1212,1223 **** * * @return the total length of the duration in milliseconds * @throws ArithmeticException if numeric overflow occurs */ public long toMillis() { ! long millis = Math.multiplyExact(seconds, 1000); ! millis = Math.addExact(millis, nanos / 1000_000); return millis; } /** * Converts this duration to the total length in nanoseconds expressed as a {@code long}. --- 1212,1231 ---- * * @return the total length of the duration in milliseconds * @throws ArithmeticException if numeric overflow occurs */ public long toMillis() { ! long tempSeconds = seconds; ! long tempNanos = nanos; ! if (tempSeconds < 0) { ! // change the seconds and nano value to ! // handle Long.MIN_VALUE case ! tempSeconds = tempSeconds + 1; ! tempNanos = tempNanos - 1000_000_000L; ! } ! long millis = Math.multiplyExact(tempSeconds, 1000); ! millis = Math.addExact(millis, tempNanos / 1000_000); return millis; } /** * Converts this duration to the total length in nanoseconds expressed as a {@code long}.
*** 1227,1238 **** * * @return the total length of the duration in nanoseconds * @throws ArithmeticException if numeric overflow occurs */ public long toNanos() { ! long totalNanos = Math.multiplyExact(seconds, NANOS_PER_SECOND); ! totalNanos = Math.addExact(totalNanos, nanos); return totalNanos; } /** * Extracts the number of days in the duration. --- 1235,1254 ---- * * @return the total length of the duration in nanoseconds * @throws ArithmeticException if numeric overflow occurs */ public long toNanos() { ! long tempSeconds = seconds; ! long tempNanos = nanos; ! if (tempSeconds < 0) { ! // change the seconds and nano value to ! // handle Long.MIN_VALUE case ! tempSeconds = tempSeconds + 1; ! tempNanos = tempNanos - 1000_000_000L; ! } ! long totalNanos = Math.multiplyExact(tempSeconds, NANOS_PER_SECOND); ! totalNanos = Math.addExact(totalNanos, tempNanos); return totalNanos; } /** * Extracts the number of days in the duration.
< prev index next >