Java 如何使用时钟从LocalDateTime的历元中获取毫秒?

Java 如何使用时钟从LocalDateTime的历元中获取毫秒?,java,Java,我正在尝试创建一个在java.util.Clock中自动连接的组件。我这样做是为了能够为JUnit测试自动连接固定时钟。我想提供一个方法,从提供的LocalDateTime返回自历元以来的毫秒数。它不像我期望的那样工作: @Component public class MyClock { @Autowired Clock clock; public long getMilliseconds(LocalDateTime time) { ZonedDateT

我正在尝试创建一个在java.util.Clock中自动连接的组件。我这样做是为了能够为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()的偏移量。我能看到的唯一获得偏移量的方法是使用时钟的区域创建ZoneDateTime


我做错了什么,还是不明白?

原来在别的地方有个bug。这工作正常。

嗯,
LocalDateTime
没有时区。因此
2017-05-04 20:26
与伦敦的epoch和纽约的epoch不同。所以你必须提供一个时区。这正是你的代码所显示的-什么是不清楚的?谢谢你的解释。原来在其他地方有一个bug,所以它工作正常。