The following function converts ATOM (RFC4287) formatted Date/Time string into a VBScript Date variable. You’ll find it useful if you want to process Atom feeds with VBScript/ASP.
Function AtomDateTime(S)
Dim CompArray,ValueArray,DateVal,TimeString,TimeVal,ZoneSign,ZoneString,I
CompArray = Split(S,"T")
If UBound(CompArray) <> 1 Then _
Err.raise vbObjectError,"AtomDateTime","No 'T' in Atom date/time"
ValueArray = Split(CompArray(0),"-")
If UBound(ValueArray) <> 2 Then _
Err.raise vbObjectError,"AtomDateTime","Atom date part is not a date"
DateVal = DateSerial(CInt(ValueArray(0)),CInt(ValueArray(1)),CInt(ValueArray(2)))
TimeString = CompArray(1) : I = InStr(TimeString,"Z")
If I > 0 Then
TimeString = Left(TimeString,I-1)
TimeVal = GetAtomTime(TimeString)
Else
I = InStr(TimeString,"-")
If I > 0 Then
ZoneSign = 1
Else
ZoneSign = -1 : I = InStr(TimeString,"+")
End If
If I = 0 Then _
Err.raise vbObjectError,"AtomDateTime","cannot recognize timezone separator"
ZoneString = Mid(TimeString,I+1,Len(TimeString))
TimeString = Left(TimeString,I-1)
TimeVal = GetAtomTime(TimeString) + ZoneSign * GetAtomTime(ZoneString)
End If
AtomDateTime = DateVal + TimeVal
End Function The DateTime is converted into GMT time value. You might need to add/subtract your local timezone offset if you want to get local time.
The GetAtomTime function converts the time portion of the DateTime field:
Function GetAtomTime(TS) Dim I : I = InStr(TS,".") : If I > 0 Then TS = Left(TS,I-1) GetAtomTime = Timevalue(TS) End Function

No comments:
Post a Comment