Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Gespeicherte Zeitstempel mit Dateizeitstempel während der Sommerzeit vergleichen

Begonnen von compinaut, März 30, 2023, 12:01:19

⏪ vorheriges - nächstes ⏩

compinaut

Hallo,
ich habe ein Problem mit der Sommerzeit.
Ich speichere in Access, welche Dokumente in einem Ordner auf der Festplatte liegen. Auch der Zeitstempel der Dateien wird gespeichert. Viele Dateien werden im Laufe der Zeit auf der Festplatte gelöscht und andere bleiben länger vorhanden, sind aber schon einmal eingelesen worden in Access. Nun besteht wegen der Sommerzeit jedoch 1 Stunde Differenz zwischen dem Zeitstempel der Datei auf der Festplatte und der Speicherung in Access. Somit würde die Datei zum 2. Mal gespeichert. Über DateAdd + 1 Stunde bei der in Access vorhandenen Datei erhalte ich dennoch nicht den gleichen Wert wie im Zeitstempel der auf der Festplatte vorhandenen Datei. Bei Ausgabe beider Werte über MsgBox sind beide Angaben genau gleich.
Enthält der Zeitstempel der Datei vielleicht mehr Informationen als der in Access gespeicherte Datumswert?
Gruß
compinaut

MzKlMu

Hallo,
Zeiten sind intern Double und somit Fließkomma. Und Fließkomma ist halt u.U. nicht ganz exakt.
Du solltest zum Vergleich die Zeit formatieren (mit Format) und erst dann vergleichen.
Zeige mal Beispiele für die Zeitdifferenzen.
Gruß Klaus

ebs17

Auf Zeitzonen und Sommerzeit kannst Du hiermit reagieren:
Time Zone Information in Access and VBA

ZitatDu solltest zum Vergleich die Zeit formatieren (mit Format)
Format(Zeitstempel, "yyyy-mm-dd hh:nn:ss")
... oder z.B. Umrechnen in einen UNIX-Timestamp (vergangene Sekunden seit dem 01.01.1970)
DateDiff("s", #1/1/1970#, Zeitstempel)
Format erzeugt einen String, DateDiff erzeugt eine Ganzzahl.
Mit einer Ganzzahl lässt sich schneller vergleichen (geringere ByteBreite) und unmittelbar mathematisch rechnen.
Mit freundlichem Glück Auf!

Eberhard

PhilS

Zitat von: compinaut am März 30, 2023, 12:01:19Enthält der Zeitstempel der Datei vielleicht mehr Informationen als der in Access gespeicherte Datumswert?
Das spielen viele Faktoren mit rein.
Ein wesentlicher ist das Dateisystem. Verschiedene Dateisysteme speichern die Dateizeiten sehr unterschiedlich.
Beispiele: FAT speichert die lokale Zeit (inkl. Sommer-/Winterzeit) und hat je nach Zeit (Erstellung, Änderung, Zugriff) eine Auflösung > 1s. NTFS dagegen speichert UTC mit einer Auflösung von 100 Nanosekunden.
FAT dürfte kaum noch eine Rolle spiele, aber viele NAS-Systeme verwenden Unix-Dateisysteme, die sich sicherlich im Detail auch anders verhalten.

Wie viel du von diesem Unterschieden mitbekommst, hängt davon ab, wie du die Zeitstempel der Dateien ausliest.

Wenn die Ausgabe der Zeiten visuell gleich aussieht, dürfte @MzKlMu's Tipp die Zeiten für den Vergleich als String zu formatieren die Lösung sein.

Zitat von: MzKlMu am März 30, 2023, 12:09:04Zeiten sind intern Double und somit Fließkomma.
Streng genommen stimmt das für Dateizeiten nicht. NTFS z.B. speichert Zeiten als 64bit Integer, der für die Verwendung in Access/VBA in Double umgewandelt werden muss, was noch mehr Ungenaugkeiten erzeugen kann, als Fließkommazahlen eh schon haben.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

compinaut

Vielen herzlichen Dank an alle!
Nun klappt es nach der Formatierung/Umwandlung mit Format(...).
Hab ja nun auch viel über die Datums-/Zeit-Speicherung bei verschiedenen Speicherformaten gelernt.
Gruß
compinaut