Problem SetCreationTime

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von drschef.

    Problem SetCreationTime

    Problem. Beim Setzen des Zeitstempels einer Datei unter VISTA mit SetCreationTime und anschließendem Auslesen mit GetCreationTime wird die Angabe Stunde innerhalb eines kompletten Zeitstempels gemäß Vorgabe geschrieben und genauso ausgelesen. Wenn man aber die Eigenschaften der gleichen Datei mit dem Explorer oder dem Total Commander ausliest, wird die Stunde um 1 reduziert angezeigt. Das bedeutet zum Beispiel anstelle 7:15 wird 6:15 angezeigt und anstelle 0:30 wird 23:30 am Vortag angezeigt.

    Dieser Versatz ist unabhängig von Sommerzeit und Winterzeit. Er ist streng reproduzierbar und tritt nur bei der Zeit-Komponente Stunde auf. Man kann dem auch schlecht vorbeugen, indem man die Zeit selbst um 1 versetzt vorgibt, weil das Tag, Monat und sogar Jahr verändern kann und damit eine umständliche Angelegenheit würde. Was soll das? ?(

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „drschef“ () aus folgendem Grund: Präzisierung

    Hallo _Pascal_

    danke für die superschnelle Antwort. Ich war sofort überzeugt, das muss es sein. Aber auch nach der Culture-Zuweisung immer noch der alte Effekt.

    So wirds zugewiesen:
    File.SetCreationTime(fname, New Date(2006, 5, 11, 17, 55, 0, 0))

    und genauso wirds hinterher angezeigt:
    MessageBox.Show(FormDate(File.GetCreationTime(fname)))

    Aber im Explorer (Eigenschaften) kommt die Zeit eben mit 16:55
    Hilfe???!!!
    Also bei mir funktioniert das ganze ...

    hab es mal so probiert

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim FileDialog As New OpenFileDialog
    3. If FileDialog.ShowDialog = Windows.Forms.DialogResult.OK Then
    4. If FileDialog.FileName <> "" Then
    5. Dim File As New FileInfo(FileDialog.FileName)
    6. File.CreationTime = dat_create.Value
    7. End If
    8. End If
    9. End Sub


    nach dem ausführen steht in den Eigenschaften der Datei das gewählte Datum des DateTimePickers ... auch die uhrzeit stimmt mit meiner Systemuhrzeit überein ... Kein Stundenversatz

    auch

    VB.NET-Quellcode

    1. File.CreationTime = New DateTime(2011, 12, 8, 11, 11, 11)


    funktioniert.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „_PASCAL_“ ()

    Hallo _Pascal_,

    habe Deine Form mit File.CreationTime ausprobiert. Das Ergebnis ist das Gleiche. Jetzt werd ich mich mal mit dem Tip von Picoflop beschäftigen, dem ich für seine Anregung danke. Wir aber leider erst morgen, da ich heute anderweitig beschäftigt bin. Auf jeden Fall klingt das mit der Zeitzone gar nicht übel.

    Keine Lösung in Sicht

    Hallo picoflop,

    Die Sache mit dem UTC sah hoffnungsvoll aus, ich habe eine Weile damit herumlaboriert, bin aber an der Komplexität der ganzen Sache gescheitert. Fakt ist, dass ich unter der richtigen Zeitzone arbeite. Fakt ist, dass der Systembefehl GetCreationTime eine Zeit liefert und der Explorer für die gleiche Datei eine Stunde weniger. Das sollte in einem System wohl grundsätzlich nicht eintreten. Ich habe an einen Virus gedacht. Ich habe weiterhin daran gedacht, ob das Problem wohl nur auf meinem Computer auftritt und beim nächsten Nutzer (allen anderen) nicht auftritt (siehe _pascal_).

    Bei Microsoft bin ich auf einen Hinweis gestoßen, dass die Funktion Date(2006, 5, 11, 17, 55, 0, 0) beim Monat und der Stunde bereits bei 0 beginnt. Aber der Fehler tritt bei mir nur bei der Stunde auf und nicht beim Monat. Und wenn ich selber erst eine Stunde hoch rechnen müsste, damit das System dann wieder eine abziehen kann, dann wäre das sehr weit hinten herum gelangt. Irgendwie bin ich am Ende.

    Fehler von mir

    Hallo,

    das Ganze ware ein Fehler von mir. Die Rechnung hat immer gestimmt. Nur gab es in der Form zwei Felder für Dateien mit Datumsangabe. Ich habe mich bei der Nachprüfung nur immer auf die falsche Datei bezogen. Danke allen Mitwirkenden.