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