我正在尝试创建一个在java.util.Clock中自动装配的Component。我这样做,以便我可以自动装配一个固定时钟进行JUnit测试。我想提供一个方法,从提供的LocalDateTime返回自纪元以来的毫秒数。它不像我期望的那样工作:
@Component
public class MyClock {
@Autowired
Clock clock;
public long getMilliseconds(LocalDateTime time) {
ZonedDateTime zdt = ZonedDateTime.of(time, clock.getZone());
return time.toInstant(zdt.getOffset()).toEpochMilli();
}
}
所以你需要time.toInstant()的Offset。我能看到获得偏移的唯一方法是使用时钟区创建ZonedDateTime。
我做错了什么或不理解?