No VBA, como converter um carimbo de data / hora UTC do UNIX em Data do fuso horário local de uma maneira simples?

Como eu sei, podemos usar abaixo para converter aproximadamente um registro de data e hora do UNIX em uma data do VB

CDate ([carimbo de data / hora UNIX] / 60/60/24) + "1/1/1970"

No entanto, as informações de fuso horário e horário de verão não são consideradas.

O fuso horário não é grande coisa. Mas não consigo obter as informações de polarização da luz do dia para um carimbo de data / hora UNIX específico.

Embora o viés da luz do dia da data 1/1 seja obviamente diferente da data 6/1, no entanto, para a data 3/12 ou a data 11/5, o cálculo do viés da luz do dia é muito complexo.

Eu tentei várias APIs, como "FileTimeToLocalFileTime" e "GetTimeZoneInformation", mas nenhuma delas funciona.

Aqui está o meu código que não pode lidar com o viés da luz do dia

Option Explicit

#If VBA7 Then
  Private Declare PtrSafe Function LocalFileTimeToFileTime Lib "kernel32" (src@, tgt@) As Long
  Private Declare PtrSafe Function FileTimeToLocalFileTime Lib "kernel32" (src@, tgt@) As Long
#Else
  Private Declare Function LocalFileTimeToFileTime Lib "kernel32" (src@, tgt@) As Long
  Private Declare Function FileTimeToLocalFileTime Lib "kernel32" (src@, tgt@) As Long
#End If

Public Function ToUTC(ByVal datetime As Date) As Date
  Dim ftLoc@, ftUtc@
  ftLoc = (datetime - #1/1/1601#) * 86400000
  LocalFileTimeToFileTime ftLoc, ftUtc
  ToUTC = ftUtc / 86400000# + #1/1/1601#
End Function

Public Function FromUTC(ByVal datetime As Date) As Date
  Dim ftUtc@, ftLoc@
  ftUtc = (datetime - #1/1/1601#) * 86400000
  FileTimeToLocalFileTime ftUtc, ftLoc
  FromUTC = ftLoc / 86400000# + #1/1/1601#
End Function

Function getDateFromTimestamp(ByVal value) As Date
    Dim t1, t2
    t1 = CDate(value / 60 / 60 / 24) + "1/1/1970"
    t2 = FromUTC(t1)
    Debug.Print t2 - t1
    getDateFromTimestamp = t2
End Function

questionAnswers(0)

yourAnswerToTheQuestion