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 *
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
;
Взято с сайта
http://www.swissdelphicenter.ch/en/tipsindex.php
DELPHI FAQ