Я попытался изменить его для своего часового пояса и
принять во внимание DST. Часовые пояса могут иметь разные настройки при их изменении.
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