Skip to content

Instantly share code, notes, and snippets.

@pke
Last active August 29, 2015 14:23
Show Gist options
  • Save pke/1d6f3ed8a44b85ee64f7 to your computer and use it in GitHub Desktop.
Save pke/1d6f3ed8a44b85ee64f7 to your computer and use it in GitHub Desktop.
Convert ISO8601 Dates to Excel Date (Variant)
Public Function iso8601todate(iso As String)
Dim result As Date: result = DateValue(Mid(iso, 1, 10)) + TimeValue(Mid(iso, 12, 8))
Dim signPos As Integer: signPos = InStr(iso, "Z")
If signPos = 0 Then signPos = InStr(iso, "+")
If signPos = 0 Then signPos = InStr(InStr(iso, "T"), iso, "-")
If signPos <> 0 Then
Dim zone As String: zone = Mid(iso, signPos)
Dim sign As String: sign = Left(zone, 1)
If sign <> "" And sign <> "Z" Then
Dim timeDiff As Date: timeDiff = TimeValue(Mid(zone, 2, 5))
If sign = "+" Then
result = result + timeDiff
Else
result = result - timeDiff
End If
End If
End If
iso8601todate = result
End Function
@pke
Copy link
Author

pke commented Jun 15, 2015

Use normal Excel cell formatting to display the resulting date.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment