Laden...

Problem mit FileInfo.LastWriteTime

Erstellt von schoko01 vor 14 Jahren Letzter Beitrag vor 6 Jahren 2.602 Views
S
schoko01 Themenstarter:in
23 Beiträge seit 2006
vor 14 Jahren
Problem mit FileInfo.LastWriteTime

Hallo @ all

Ich versuche gerade über die "LastWriteTime", Dateien von einem Remoterechner mit dem Timestamp aus dem lokalen Sicherungs zip zu vergleichen.

Funktioniert soweit auch, bei 80% der Dateien.
Beim Rest ist die Zeit aus dem Zip z.B 07:54:36,
die Zeit der Remote Datei jedoch 08:54:36 und die UTC zeit 06:54:36
Offset gibt es leider keinen .

Der Windows Explorer zeigt alles korrelt an. (07:54:36)

Kennt jemand dieses Phänomen????

mfg
Gerald

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo schoko01,

ja, kenne ich, wie dieser Kommentar aus einem meiner Programme zeigt:


//-----------------------------------------------------------------
// Wenn man die Zeit per
//   fi.LastWriteTime
// oder per
//   fi.LastWriteTimeUtc.ToLocalTime ()
// abbruft sind *manche* Zeiten gegenüber der Anzeige von 'dir'
// eine Stunde zu hoch (und zwar die, die als Zeitzoneoffset +2
// statt +1 haben). Da dir aber als Zeitzonenoffset (wohl) immer
// +1 verwendet (warum auch immer; wohl auch bei Sommerzeit)
// addiere ich auch fest eine Stunde.
// Das hilft zwar nicht bei bei Dateien, die ich bei verstellter
// Zeitzone auf meinem Rechner erstellt habe, aber zumindest
// scheint es bei Sommer- und Winterzeit zu funktionieren.
//-----------------------------------------------------------------

Natürlich ist das leider gleichzeitig auch ein Eingeständnis, dass ich keine in allen Fällen korrekte Lösung kenne.

Ob dir und Explorer in allen Fällen die gleichen Zeiten anzeigen, weiß ich nicht, aber gehe mal davon aus.

herbivore

S
schoko01 Themenstarter:in
23 Beiträge seit 2006
vor 14 Jahren

Danke für die schnelle Antwort.

Einleuchten tut mir das zwar nicht ganz, da auf dem Rechner wo die Sicherungsdatei erstellt wird, eine Zeitsynchonisation mit einem Server läuft und die Zeitzone somit immer gleich sein sollte.

Dann eben Datein binär vergleichen.

mfg Gerald

49.485 Beiträge seit 2005
vor 6 Jahren

Hallo zusammen,

das Problem hat mich gerade nochmal eingeholt. Es ist wohl doch etwas anders als in meinem Kommentar oben beschrieben.

Nach meinen aktuellen Versuchen scheint 'dir' immer den aktuellen Zeitzonenoffset auf die eigentlich als UTC gespeicherte Zeit zu addieren, egal welcher Zeitzonenoffset zum Zeitpunkt der letzten Änderung gültig war. Also während der deutschen Winterzeit +1 und während der deutschen Sommerzeit +2. Das bedeutet, dass 'dir' für ein und dieselbe Datei eine um eine Stunde abweichende Zeit anzeigt, je nachdem, ob man 'dir' im Winter oder im Sommer aufruft.

Nehmen wir an, es gibt zwei Dateien, eine zuletzt im Sommer geändert und eine im Winter und zwar jeweils um 14:00 in der zum Änderungszeitpunkt geltenden Zeitzone. Die im Dateisystem gespeicherte UTC-Zeit ist im Sommer um zwei Stunden niedriger (also 12:00 UTC) und im Winter nur eine Stunde niedriger (also 13:00 UTC).

'dir' addiert im Sommer aufgerufen nun pauschal zwei Stunden auf die gespeicherte UTC-Zeit und zeigt folgendes an:


11.07.2017  14:00                 0 sommer.txt
11.01.2017  15:00                 0 winter.txt

'dir' addiert im Winter aufgerufen nun pauschal eine Stunde auf die gespeicherte UTC-Zeit und zeigt folgendes an:


11.07.2017  13:00                 0 sommer.txt
11.01.2017  14:00                 0 winter.txt

Wenn man nun die Zeit haben möchte, die 'dir' aktuell anzeigt, muss man also auf die UTC-Zeit eine Stunde addieren, wenn aktuell die deutsche Winterzeit gilt, und zwei Stunden, wenn aktuell die deutsche Sommerzeit gilt.

Das ist natürlich sehr unbefriedigend, denn wenn ich eine Datei um 14:00 geändert habe, dann möchte ich, dass immer 14:00 angezeigt wird, egal wann ich 'dir' aufrufe.

Also eigentlich sollte die Anzeige Sommers wie Winters lauten:


11.07.2017  14:00                 0 sommer.txt
11.01.2017  14:00                 0 winter.txt

Aber immerhin weiß ich nun wie 'dir' rechnet und kann somit das Verhalten nachahmen/nachbilden.

herbivore