Mega Code Archive

 
Categories / Delphi / Examples
 

Convert rfc1123 to a tdatetime format

function RFC1123ToDateTime(Date: string): TDateTime; var day, month, year: Integer; strMonth: string; Hour, Minute, Second: Integer; begin try day := StrToInt(Copy(Date, 6, 2)); strMonth := Copy(Date, 9, 3); if strMonth = 'Jan' then month := 1 else if strMonth = 'Feb' then month := 2 else if strMonth = 'Mar' then month := 3 else if strMonth = 'Apr' then month := 4 else if strMonth = 'May' then month := 5 else if strMonth = 'Jun' then month := 6 else if strMonth = 'Jul' then month := 7 else if strMonth = 'Aug' then month := 8 else if strMonth = 'Sep' then month := 9 else if strMonth = 'Oct' then month := 10 else if strMonth = 'Nov' then month := 11 else if strMonth = 'Dec' then month := 12; year := StrToInt(Copy(Date, 13, 4)); hour := StrToInt(Copy(Date, 18, 2)); minute := StrToInt(Copy(Date, 21, 2)); second := StrToInt(Copy(Date, 24, 2)); Result := 0; Result := EncodeTime(hour, minute, second, 0); Result := Result + EncodeDate(year, month, day); except Result := now; end; end; function DateTimeToRFC1123(aDate: TDateTime): string; const StrWeekDay: string = 'MonTueWedThuFriSatSun'; StrMonth: string = 'JanFebMarAprMayJunJulAugSepOctNovDec'; var Year, Month, Day: Word; Hour, Min, Sec, MSec: Word; DayOfWeek: Word; begin DecodeDate(aDate, Year, Month, Day); DecodeTime(aDate, Hour, Min, Sec, MSec); DayOfWeek := ((Trunc(aDate) - 2) mod 7); Result := Copy(StrWeekDay, 1 + DayOfWeek * 3, 3) + ', ' + Format('%2.2d %s %4.4d %2.2d:%2.2d:%2.2d', [Day, Copy(StrMonth, 1 + 3 * (Month - 1), 3), Year, Hour, Min, Sec]); end;