我目前正在編寫一個應用程序,我需要檢查是否有任何文件在昨天之前創建並清理它們。此刻,當我嘗試以下:Java8和夏令時
LocalDateTime today = LocalDate.now().atStartOfDay();
long todayEpoch = today.atZone(ZoneId.of("Europe/London")).toEpochSecond() * 1000;
和轉換毫秒回日期(在任何網上毫秒至今轉換器),它告訴我,我1小時後面。
這是因爲夏令時,這意味着我們是格林威治標準時間+ 1:00,這可能解釋了1小時的差異。
爲了解決這個問題,我不得不做改變區域ID爲UTC如下:
final LocalDateTime today = LocalDate.now().atStartOfDay();
long todayEpoch = today.atZone(ZoneId.of("UTC")).toEpochSecond() * 1000;
但我仍然感到困惑它是如何工作的。
有人可以解釋爲什麼嗎?
你是如何得到文件創建日期的?如果這些文件是磁盤上的文件,爲什麼不使用'FileTime'對象,通過'Files.readAttributes(path,BasicFileAttributes.class).creationTime()'檢索。從這裏你得到一個'Instant',你可以用'Instant.now()。minusDays(1)'比較,沒有涉及時區。 – Tunaki