/** * Rounds this instance to the specified number of decimal digits in the seconds, rolling over to minutes, hours, days, etc. as necessary. This instance is assumed to express a time in the {@link TimeStandard#COORDINATED_UNIVERSAL_TIME} (UTC) time standard so the {@code Second} ({@link #getSecond get}) will be allowed to go above 60 during a leap second. * @param digits The number of digits after the decimal point to include in the seconds. * @return The rounded date. */ @CS2JWarning("Unhandled attribute removed: Pure") @Nonnull public final GregorianDate roundSeconds(int digits) { return roundSeconds(digits, TimeStandard.COORDINATED_UNIVERSAL_TIME); }
@Test public final void roundSecondsRoundsFractionalSeconds() { GregorianDate gd = new GregorianDate(2012, 8, 7, 13, 59, 55.5152535); AssertHelper.assertEquals(new GregorianDate(2012, 8, 7, 13, 59, 55.5152535), gd.roundSeconds(7)); AssertHelper.assertEquals(new GregorianDate(2012, 8, 7, 13, 59, 55.515254), gd.roundSeconds(6)); AssertHelper.assertEquals(new GregorianDate(2012, 8, 7, 13, 59, 55.51525), gd.roundSeconds(5)); AssertHelper.assertEquals(new GregorianDate(2012, 8, 7, 13, 59, 55.5153), gd.roundSeconds(4)); AssertHelper.assertEquals(new GregorianDate(2012, 8, 7, 13, 59, 55.515), gd.roundSeconds(3)); AssertHelper.assertEquals(new GregorianDate(2012, 8, 7, 13, 59, 55.52), gd.roundSeconds(2)); AssertHelper.assertEquals(new GregorianDate(2012, 8, 7, 13, 59, 55.5), gd.roundSeconds(1)); AssertHelper.assertEquals(new GregorianDate(2012, 8, 7, 13, 59, 56D), gd.roundSeconds(0)); }
@Test public final void roundSecondsRollsOver() { GregorianDate gd = new GregorianDate(2012, 8, 7, 13, 55, 59.9999999); AssertHelper.assertEquals(new GregorianDate(2012, 8, 7, 13, 56, 0.0), gd.roundSeconds(6)); gd = new GregorianDate(2012, 8, 7, 13, 59, 59.9999999); AssertHelper.assertEquals(new GregorianDate(2012, 8, 7, 14, 0, 0.0), gd.roundSeconds(6)); gd = new GregorianDate(2012, 8, 7, 23, 59, 59.9999999); AssertHelper.assertEquals(new GregorianDate(2012, 8, 8, 0, 0, 0.0), gd.roundSeconds(6)); gd = new GregorianDate(2012, 8, 31, 23, 59, 59.9999999); AssertHelper.assertEquals(new GregorianDate(2012, 9, 1, 0, 0, 0.0), gd.roundSeconds(6)); gd = new GregorianDate(2012, 12, 31, 23, 59, 59.9999999); AssertHelper.assertEquals(new GregorianDate(2013, 1, 1, 0, 0, 0.0), gd.roundSeconds(6)); }
@Test public final void roundSecondsAllows61SecondsDuringLeapSecond() { GregorianDate gd = new GregorianDate(2012, 6, 30, 23, 59, 59.9999999); AssertHelper.assertEquals(new GregorianDate(2012, 6, 30, 23, 59, 60.0), gd.roundSeconds(6)); gd = new GregorianDate(2012, 6, 30, 23, 59, 60.9999999); AssertHelper.assertEquals(new GregorianDate(2012, 7, 1, 0, 0, 0.0), gd.roundSeconds(6)); }
@Test public final void roundSecondsDoesNotAllow61SecondsDuringLeapSecondIfTimeStandardIsNotUtc() { GregorianDate gd = new GregorianDate(2012, 6, 30, 23, 59, 59.9999999); AssertHelper.assertEquals(new GregorianDate(2012, 7, 1, 0, 0, 0.0), gd.roundSeconds(6, TimeStandard.INTERNATIONAL_ATOMIC_TIME)); }