Buena ese link 79137913
aca un example, esta largo porque es una función que tenia para ese tipo de fecha, pero en ese caso puntual se puede simplificar, esa función si agrega la diferencia horaria
Private Declare Function GetTimeZoneInformation Lib "KERNEL32" (lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long
Private Type TIME_ZONE_INFORMATION
Bias As Long
None(0 To 169) As Byte
End Type
Public Function PubDateToVBDate(ByVal sPubDate As String) As Date
Dim tTZI As TIME_ZONE_INFORMATION
Dim lRet As Long
Dim TDelay As String
Dim sSimbol As String
Dim sHour As String
Dim sMinute As String
Dim ArrMonthEnglish As Variant
Dim i As Long
GetTimeZoneInformation tTZI
sPubDate = UCase(sPubDate)
ArrMonthEnglish = Array("JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC")
For i = 0 To 11
sPubDate = Replace(sPubDate, CStr(ArrMonthEnglish(i)), i + 1)
Next
If Len(sPubDate) = 5 Then
sPubDate = Now & " " & sPubDate
End If
If IsDate(sPubDate) Then
PubDateToVBDate = DateAdd("h", -(tTZI.Bias / 60), CDate(sPubDate))
Exit Function
End If
lRet = InStr(sPubDate, ", ")
If lRet Then
sPubDate = Mid(sPubDate, lRet + 2)
End If
If IsDate(sPubDate) Then 'por las dudas
PubDateToVBDate = DateAdd("h", -(tTZI.Bias / 60), CDate(sPubDate))
Exit Function
End If
lRet = InStr(sPubDate, " ")
If lRet = 0 Then
sPubDate = Replace(sPubDate, "T", " ")
If Right(sPubDate, 1) = "Z" Then
sPubDate = Replace(sPubDate, "Z", "+00:00")
End If
TDelay = Replace(Right$(sPubDate, 6), ":", "")
sPubDate = Left$(sPubDate, Len(sPubDate) - 6)
Else
Select Case Right(sPubDate, 3)
Case "GMT": TDelay = "+0000"
Case "EDT": TDelay = "-0400"
Case "CDT", "EST": TDelay = "-0500"
Case "CST", "MDT": TDelay = "-0600"
Case "MST", "PDT": TDelay = "-0700"
Case "PST", "ADT": TDelay = "-0800"
Case "AST", "HDT": TDelay = "-0900"
Case "HDT": TDelay = "-1000"
End Select
If Len(TDelay) Then
sPubDate = Left(sPubDate, Len(sPubDate) - 4)
Else
TDelay = Right(sPubDate, 5)
sPubDate = Left(sPubDate, Len(sPubDate) - 6)
End If
End If
If IsDate(sPubDate) Then
sSimbol = Left$(TDelay, 1)
sHour = Mid$(TDelay, 2, 2)
sMinute = Right$(TDelay, 2)
If IsNumeric(sHour) And IsNumeric(sMinute) Then
If sSimbol = "+" Then
sPubDate = DateAdd("h", -Val(sHour), CDate(sPubDate))
sPubDate = DateAdd("m", -Val(sMinute), CDate(sPubDate))
ElseIf sSimbol = "-" Then
sPubDate = DateAdd("h", Val(sHour), CDate(sPubDate))
sPubDate = DateAdd("m", Val(sMinute), CDate(sPubDate))
End If
PubDateToVBDate = DateAdd("h", -(tTZI.Bias / 60), CDate(sPubDate))
End If
End If
End Function
Private Sub Form_Load()
MsgBox PubDateToVBDate(URLGet("http://www.timeapi.org/utc/now"))
End Sub
Function URLGet(URL)
Set Http = CreateObject("Microsoft.XMLHTTP")
Http.Open "GET", URL & "?RND=" & Timer, False
Http.Send
If Http.Status = "200" Then URLGet = Http.responseText
End Function