2017-05-04 76 views
1

我想創建一個java.util.Clock自動裝配的組件。我這樣做是爲了讓我可以爲JUnit測試自動裝入固定時鐘。我想提供一個方法,該方法從提供的LocalDateTime返回自時代以來的毫秒數。它不像我期待的那樣工作:如何使用時鐘從LocalOutTime的紀元獲得毫秒?

@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()的偏移量。我可以看到獲得偏移量的唯一方法是使用時鐘區域創建ZonedDateTime。

我在做什麼錯或不理解?

+1

好吧,'LocalDateTime'沒有時區。所以'2017-05-04 20:26'與倫敦和紐約的時代不同。所以你必須提供一個時區。這正是你的代碼所顯示的 - 什麼不清楚? –

+0

謝謝你的解釋。事實證明,在其他地方有一個錯誤,所以這是正常工作。 – wxkevin

回答

1

事實證明,在其他地方有一個錯誤。這工作正常。