GH-359 - Add Now.instant().

This commit is contained in:
Oliver Drotbohm
2023-11-03 10:42:30 +01:00
parent 20a7474f2f
commit 4e453885ee
3 changed files with 28 additions and 4 deletions

View File

@@ -129,10 +129,7 @@ public class Moments implements Now {
*/ */
@Override @Override
public LocalDateTime now() { public LocalDateTime now() {
return LocalDateTime.ofInstant(instant(), properties.getZoneId());
Instant instant = clock.instant().plus(shift);
return LocalDateTime.ofInstant(instant, properties.getZoneId());
} }
/* /*
@@ -144,6 +141,15 @@ public class Moments implements Now {
return now().toLocalDate(); return now().toLocalDate();
} }
/*
* (non-Javadoc)
* @see org.springframework.modulith.moments.support.Now#instant()
*/
@Override
public Instant instant() {
return clock.instant().plus(shift);
}
private void emitEventsFor(LocalDateTime time) { private void emitEventsFor(LocalDateTime time) {
events.publishEvent(HourHasPassed.of(time.truncatedTo(ChronoUnit.HOURS))); events.publishEvent(HourHasPassed.of(time.truncatedTo(ChronoUnit.HOURS)));
} }

View File

@@ -15,6 +15,7 @@
*/ */
package org.springframework.modulith.moments.support; package org.springframework.modulith.moments.support;
import java.time.Instant;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@@ -41,4 +42,11 @@ public interface Now {
* @return will never be {@literal null}. * @return will never be {@literal null}.
*/ */
LocalDate today(); LocalDate today();
/**
* Returns the current Instant.
*
* @return will never be {@literal null}.
*/
Instant instant();
} }

View File

@@ -24,6 +24,7 @@ import java.time.Duration;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.Year; import java.time.Year;
import java.time.ZoneOffset;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.time.temporal.WeekFields; import java.time.temporal.WeekFields;
import java.util.Locale; import java.util.Locale;
@@ -173,6 +174,15 @@ class MomentsUnitTests {
assertThat(before.plus(duration)).isCloseTo(after, within(200, ChronoUnit.MILLIS)); assertThat(before.plus(duration)).isCloseTo(after, within(200, ChronoUnit.MILLIS));
} }
@Test // GH-359
void returnsInstant() {
var instant = hourly.instant();
var now = hourly.now();
assertThat(LocalDateTime.ofInstant(instant, ZoneOffset.UTC)).isCloseTo(now, within(50, ChronoUnit.MILLIS));
}
private Duration getNumberOfDaysForThreeMonth(LocalDate date) { private Duration getNumberOfDaysForThreeMonth(LocalDate date) {
int days = 0; int days = 0;