diff --git a/engine/time/src/main/java/io/deephaven/time/DateTimeUtils.java b/engine/time/src/main/java/io/deephaven/time/DateTimeUtils.java index 36a38b76428..7a8831811b8 100644 --- a/engine/time/src/main/java/io/deephaven/time/DateTimeUtils.java +++ b/engine/time/src/main/java/io/deephaven/time/DateTimeUtils.java @@ -433,8 +433,7 @@ private CachedCurrentDate(@NotNull final ZoneId timeZone) { synchronized void update(final long currentTimeMillis) { date = toLocalDate(epochMillisToInstant(currentTimeMillis), timeZone); str = formatDate(date); - valueExpirationTimeMillis = - epochMillis(atMidnight(epochMillisToZonedDateTime(currentTimeMillis, timeZone)).plusDays(1)); + valueExpirationTimeMillis = epochMillis(date.plusDays(1).atStartOfDay(timeZone)); } } @@ -450,6 +449,10 @@ public ZoneId getKey(final CACHED_DATE_TYPE cachedDate) { private static final KeyedObjectHashMap cachedCurrentDates = new KeyedObjectHashMap<>(new CachedDateKey<>()); + private static CachedCurrentDate getCachedCurrentDate(@NotNull final ZoneId timeZone) { + return cachedCurrentDates.putIfAbsent(timeZone, CachedCurrentDate::new); + } + /** * Provides the current date string according to the {@link #currentClock() current clock}. Under most * circumstances, this method will return the date according to current system time, but during replay simulations, @@ -468,7 +471,7 @@ public static String today(@Nullable final ZoneId timeZone) { return null; } - return cachedCurrentDates.putIfAbsent(timeZone, CachedCurrentDate::new).getStr(); + return getCachedCurrentDate(timeZone).getStr(); } /** @@ -485,6 +488,7 @@ public static String today(@Nullable final ZoneId timeZone) { @ScriptApi @NotNull public static String today() { + //noinspection ConstantConditions return today(DateTimeUtils.timeZone()); } @@ -506,7 +510,7 @@ public static LocalDate todayLocalDate(@Nullable final ZoneId timeZone) { return null; } - return cachedCurrentDates.putIfAbsent(timeZone, CachedCurrentDate::new).getLocalDate(); + return getCachedCurrentDate(timeZone).getLocalDate(); } /** @@ -523,6 +527,7 @@ public static LocalDate todayLocalDate(@Nullable final ZoneId timeZone) { @ScriptApi @NotNull public static LocalDate todayLocalDate() { + //noinspection ConstantConditions return todayLocalDate(DateTimeUtils.timeZone()); } diff --git a/engine/time/src/test/java/io/deephaven/time/calendar/TestBusinessCalendar.java b/engine/time/src/test/java/io/deephaven/time/calendar/TestBusinessCalendar.java index 1e7596f625b..356b931812d 100644 --- a/engine/time/src/test/java/io/deephaven/time/calendar/TestBusinessCalendar.java +++ b/engine/time/src/test/java/io/deephaven/time/calendar/TestBusinessCalendar.java @@ -1503,29 +1503,29 @@ public void testMinusNonBusinessDays() { } public void testFutureBusinessDate() { - assertEquals(bCalendar.plusBusinessDays(DateTimeUtils.todayLocalDate(), 3), bCalendar.futureBusinessDate(3)); - assertEquals(bCalendar.plusBusinessDays(DateTimeUtils.todayLocalDate(), -3), bCalendar.futureBusinessDate(-3)); + assertEquals(bCalendar.plusBusinessDays(DateTimeUtils.todayLocalDate(bCalendar.timeZone()), 3), bCalendar.futureBusinessDate(3)); + assertEquals(bCalendar.plusBusinessDays(DateTimeUtils.todayLocalDate(bCalendar.timeZone()), -3), bCalendar.futureBusinessDate(-3)); assertNull(bCalendar.futureBusinessDate(NULL_INT)); } public void testPastBusinessDate() { - assertEquals(bCalendar.minusBusinessDays(DateTimeUtils.todayLocalDate(), 3), bCalendar.pastBusinessDate(3)); - assertEquals(bCalendar.minusBusinessDays(DateTimeUtils.todayLocalDate(), -3), bCalendar.pastBusinessDate(-3)); + assertEquals(bCalendar.minusBusinessDays(DateTimeUtils.todayLocalDate(bCalendar.timeZone()), 3), bCalendar.pastBusinessDate(3)); + assertEquals(bCalendar.minusBusinessDays(DateTimeUtils.todayLocalDate(bCalendar.timeZone()), -3), bCalendar.pastBusinessDate(-3)); assertNull(bCalendar.pastBusinessDate(NULL_INT)); } public void testFutureNonBusinessDate() { - assertEquals(bCalendar.plusNonBusinessDays(DateTimeUtils.todayLocalDate(), 3), + assertEquals(bCalendar.plusNonBusinessDays(DateTimeUtils.todayLocalDate(bCalendar.timeZone()), 3), bCalendar.futureNonBusinessDate(3)); - assertEquals(bCalendar.plusNonBusinessDays(DateTimeUtils.todayLocalDate(), -3), + assertEquals(bCalendar.plusNonBusinessDays(DateTimeUtils.todayLocalDate(bCalendar.timeZone()), -3), bCalendar.futureNonBusinessDate(-3)); assertNull(bCalendar.futureNonBusinessDate(NULL_INT)); } public void testPastNonBusinessDate() { - assertEquals(bCalendar.minusNonBusinessDays(DateTimeUtils.todayLocalDate(), 3), + assertEquals(bCalendar.minusNonBusinessDays(DateTimeUtils.todayLocalDate(bCalendar.timeZone()), 3), bCalendar.pastNonBusinessDate(3)); - assertEquals(bCalendar.minusNonBusinessDays(DateTimeUtils.todayLocalDate(), -3), + assertEquals(bCalendar.minusNonBusinessDays(DateTimeUtils.todayLocalDate(bCalendar.timeZone()), -3), bCalendar.pastNonBusinessDate(-3)); assertNull(bCalendar.pastNonBusinessDate(NULL_INT)); } diff --git a/engine/time/src/test/java/io/deephaven/time/calendar/TestCalendar.java b/engine/time/src/test/java/io/deephaven/time/calendar/TestCalendar.java index 8f8304ef0f1..d461cfcc29a 100644 --- a/engine/time/src/test/java/io/deephaven/time/calendar/TestCalendar.java +++ b/engine/time/src/test/java/io/deephaven/time/calendar/TestCalendar.java @@ -159,18 +159,18 @@ public void testMinusDays() { } public void testCurrentDate() { - assertEquals(DateTimeUtils.todayLocalDate(), calendar.calendarDate()); + assertEquals(DateTimeUtils.todayLocalDate(calendar.timeZone()), calendar.calendarDate()); } public void testFutureDate() { - assertEquals(calendar.plusDays(DateTimeUtils.todayLocalDate(), 3), calendar.futureDate(3)); - assertEquals(calendar.plusDays(DateTimeUtils.todayLocalDate(), -3), calendar.futureDate(-3)); + assertEquals(calendar.plusDays(DateTimeUtils.todayLocalDate(calendar.timeZone()), 3), calendar.futureDate(3)); + assertEquals(calendar.plusDays(DateTimeUtils.todayLocalDate(calendar.timeZone()), -3), calendar.futureDate(-3)); assertNull(calendar.futureDate(NULL_INT)); } public void testPastDate() { - assertEquals(calendar.minusDays(DateTimeUtils.todayLocalDate(), 3), calendar.pastDate(3)); - assertEquals(calendar.minusDays(DateTimeUtils.todayLocalDate(), -3), calendar.pastDate(-3)); + assertEquals(calendar.minusDays(DateTimeUtils.todayLocalDate(calendar.timeZone()), 3), calendar.pastDate(3)); + assertEquals(calendar.minusDays(DateTimeUtils.todayLocalDate(calendar.timeZone()), -3), calendar.pastDate(-3)); assertNull(calendar.pastDate(NULL_INT)); }