VBA Tipp: Unix-Systemdatum wandeln

Aus DBWiki
Wechseln zu: Navigation, Suche

Aufgabenstellung

Ich möchte das Unix-Systemdatum (Sekunden seit dem 1.1.1970) in ein Access-Datum (Tage seit dem 30.12.1899) wandeln - bzw. umgekehrt.

Lösung

Public Function DateToUnix(D As Date) As Long
  DateToUnix = DateDiff("s", #1/1/1970#, D)
End Function
 
 
Public Function UnixToDate(D As Long, Optional bDateOnly As Boolean) As Date
  If bDateOnly Then
    UnixToDate = CDate(Format(DateAdd("s", D, #1/1/1970#), "dd.mm.yyyy"))
   Else
    UnixToDate = DateAdd("s", D, #1/1/1970#)
  End If
End Function

Aufruf dann z.B.:

Debug.Print DateToUnix(CDate("2001-1-1"))
 978307200
Wiki hinweis.png Anmerkung: Dabei ist ggf. Zeitzonen- und Sommerzeit-Information zu ergänzen (die Unix-Zeit ist UTC - also Greenwich-Zeit ohne Sommerzeit!)