Wie man dorthin Sekunden seit Epoche (1.1.1970) in VBA?
Frage
Wie kann ich Sekunden seit Epoche (1.1.1970) in VBA / p>
Lösung
Wie wäre:
datediff("s",#1970/1/1#,now())
Andere Tipps
Diese sollte schneller als die DateDiff Lösung laufen:
Private Function Long2Date(lngDate As Long) As Date
Long2Date = lngDate / 86400# + #1/1/1970#
End Function
Private Function Date2Long(dtmDate As Date) As Long
Date2Long = (dtmDate - #1/1/1970#) * 86400
End Function
Hier ist eine Lösung: http://vbcity.com/forums/t/5084.aspx
Function UnixTime() As Variant
'The first parameter determines how the
' difference will be measured in i.e. "S" for seconds
UnixTime = DateDiff("S", "1/1/1970", Now())
End Function
Ich habe versucht es für meine Zeitzone ändern und berücksichtigen DST. Zeitzonen können diferent Einstellungen haben, wenn sie sich ändert.
Function Epoch2Date(lngDate As Long) As Date
'transfer to date
Epoch2Date = lngDate / 86400# + #1/1/1970#
'check if it is summer time
If IsDST(Epoch2Date) = False Then
'here you can use diferent values depend on time zone
Epoch2Date = Epoch2Date - 0.041666667
Else
Epoch2Date = Epoch2Date - 0.0833333333333333
End If
End Function
Public Function IsDST(ByVal d0 As Date) As Boolean
IsDST = d0 >= NextSun("24.3." & Year(d0) & " 01:59:59") And d0 < NextSun("24.10." & Year(d0) & " 01:59:59")
End Function
Private Function NextSun(d1 As Date) As Date
'if 24.3 or 24.10 is sunday returns 31.3 or 31.10
If Weekday(d1, vbMonday) = 7 Then
NextSun = d1 + 7
Else
'if not return nearest sunday
NextSun = d1 + 7 - Weekday(d1, vbMonday)
End If
End Function
DateDiff("s", "01/01/1970 00:00:00", Now())
& Format(Now(), "ms")
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow