/** * Returns the value of this {@link JulianDate} in the standard format. * @return The string. */ @Override public String toString() { StringBuilder builder = new StringBuilder(); StringHelper.appendFormat(builder, CultureInfoHelper.getCurrentCulture(), "{0}:{1} ", m_day, m_secondsOfDay); builder.append(getStandard() == TimeStandard.COORDINATED_UNIVERSAL_TIME ? "UTC" : "TAI"); if (JulianDate.lessThan(this, GregorianDate.MinValue.toJulianDate())) { StringHelper.appendFormat(builder, CultureInfoHelper.getCurrentCulture(), " (before {0})", GregorianDate.MinValue); } else if (JulianDate.greaterThan(this, GregorianDate.MaxValue.toJulianDate())) { StringHelper.appendFormat(builder, CultureInfoHelper.getCurrentCulture(), " (after {0})", GregorianDate.MaxValue); } else { StringHelper.appendFormat(builder, CultureInfoHelper.getCurrentCulture(), " ({0})", toGregorianDate()); } return builder.toString(); }
/** * Tests for consistency between the comparison operators. */ @Test public final void testComparisonConsistency() { JulianDate one = new JulianDate(1, 0.0); JulianDate two = new JulianDate(1, 1e-11); Assert.assertTrue(JulianDate.greaterThan(two, one)); Assert.assertTrue(JulianDate.greaterThanOrEqual(two, one)); Assert.assertFalse(JulianDate.greaterThan(one, two)); Assert.assertFalse(JulianDate.greaterThanOrEqual(one, two)); Assert.assertFalse(JulianDate.lessThan(two, one)); Assert.assertFalse(JulianDate.lessThanOrEqual(two, one)); Assert.assertTrue(JulianDate.lessThan(one, two)); Assert.assertTrue(JulianDate.lessThanOrEqual(one, two)); Assert.assertFalse(JulianDate.equals(one, two)); Assert.assertFalse(JulianDate.equals(two, one)); Assert.assertTrue(JulianDate.notEquals(one, two)); Assert.assertTrue(JulianDate.notEquals(two, one)); }
/** * Tests that adding small values to a UTC Julian date does not result in getting stuck when crossing a leap second. */ @Test public final void testUtcAddNotStuckAtLeapSecond() { LeapSeconds leapSeconds = new LeapSeconds(); LeapSeconds.setInstance(leapSeconds); JulianDate date = new JulianDate(2453736, 43198.0, TimeStandard.COORDINATED_UNIVERSAL_TIME); JulianDate after = new JulianDate(2453736, 43202.0, TimeStandard.COORDINATED_UNIVERSAL_TIME); int i; for (i = 0; i < 100; ++i) { date = JulianDate.add(date, Duration.fromSeconds(0.1)); if (JulianDate.greaterThan(date, after)) { break; } } //5 second difference, so 50 additions of a tenth of a second each Assert.assertEquals((int) 50, (int) i); }