DELPHI FAQ: Как конвертировать RFC1123 в TDateTime?


Как конвертировать RFC1123 в TDateTime?
Previous  Home  Next



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 * 33) + ', ' + 
    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


Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php




DELPHI FAQ




EOMY TOP 100      Рейтинг@Mail.ru      Rambler's Top100