convert an rfc date to a local date
Posted: Sun Mar 20, 2005 8:27 pm
Code updated for 5.20+
i'm working on this procedure, and it works well but...
microsoft internet time function do not convert GMT part.
how to improve this function ?
i'm working on this procedure, and it works well but...
microsoft internet time function do not convert GMT part.
how to improve this function ?
Code: Select all
Procedure.s rfcToLocal(rfcDate.s)
;/
;/ 'RFC Date String' --> 'Local Date String'
;/
;/ in: STRING rfcDate ex. "Wed, 03 Sep 2003 13:21:05 +0100"
;/ out: STRING localDate ex. "Wednesday, 3 September 2003 13:21:05"
;/
;/ RFC STRING --> SYSTEMTIME
libID.l = OpenLibrary(#PB_Any,"wininet.dll")
If libID
CallFunction(libID,"InternetTimeToSystemTime",@rfcDate,SystemDate.SYSTEMTIME,0)
CloseLibrary(libID)
Else
ProcedureReturn ""
EndIf
;/ SYSTEMTIME --> LOCAL DATE STRING
DateFormat.s = "dddd',' d MMMM yyyy gg"
nBytes.l = GetDateFormat_(0,0,SystemDate,DateFormat,"",0)
LocalDate.s = Space(nBytes)
If GetDateFormat_(0,0,SystemDate,DateFormat,LocalDate,nBytes) = 0
ProcedureReturn ""
EndIf
;/ SYSTEMTIME --> LOCAL TIME STRING
TimeFormat.s = " HH':'mm':'ss"
nBytes.l = GetTimeFormat_(0,#TIME_FORCE24HOURFORMAT,SystemDate,TimeFormat,"",0)
LocalTime.s = Space(nBytes)
If GetTimeFormat_(0,#TIME_FORCE24HOURFORMAT,SystemDate,TimeFormat,LocalTime,nBytes) = 0
ProcedureReturn LocalDate
EndIf
;/ RFC 'GMT PART' STRING --> CORRECTED LOCAL TIME STRING
GMT.s = StringField(rfcDate,6," ")
Debug GMT ; ?
ProcedureReturn LocalDate + LocalTime
EndProcedure
Debug rfcToLocal("Wed, 03 Sep 2003 13:21:05 -0400")