Ich schreibe gerade eine Anwendung, wo ich überprüfen muss, ob es irgendwelche Dateien gab, die vor gestern erstellt wurden, und sie bereinigen. Im Moment, wenn ich versuche die folgenden:Java8 und Sommerzeit
LocalDateTime today = LocalDate.now().atStartOfDay();
long todayEpoch = today.atZone(ZoneId.of("Europe/London")).toEpochSecond() * 1000;
und wandeln die Millisekunden zurück zu einem Date (auf jedem Online-Millisekunden bisher Konverter) es sagt mir, ich bin 1 Stunde zurück.
Dies ist wegen Daylight Savings Time, was bedeutet, dass wir GMT + 1: 00 sind, was wahrscheinlich die 1 Stunde Unterschied erklärt.
Um dies zu lösen, ich, wie unten zu tun hatte die Zone Id zu UTC ändern:
final LocalDateTime today = LocalDate.now().atStartOfDay();
long todayEpoch = today.atZone(ZoneId.of("UTC")).toEpochSecond() * 1000;
Aber ich bin immer noch verwirrt, wie es funktioniert.
Kann jemand erklären warum?
Wie erhalten Sie das Datum der Dateierstellung? Wenn das Dateien auf der Festplatte sind, warum nicht ein 'FileTime'-Objekt verwenden, das mit' Files.readAttributes (Pfad, BasicFileAttributes.class) .creationTime() '? Daraus ergibt sich ein 'Instant', den man mit' Instant.now(). MinusDays (1) 'vergleichen kann, es gibt keine Zeitzonen. – Tunaki