GMT 时间格式转换到 TDateTime ,Delphi

 1 //GMT 时间格式转换到 TDateTime
 2 //忽略时区
 3 function GMT2DateTime(const pSour:PAnsiChar):TDateTime;
 4 
 5   function GetMonthDig(const Value:PAnsiChar):Integer;
 6   const
 7     MonthDig:array[1..12] of PAnsiChar =
 8     (
 9      'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'
10     );
11   var
12     Index:Integer;
13   begin
14     Result := 0;
15     for Index := 1 to 12 do
16     begin
17       if AnsiStrIComp(Value,MonthDig[Index]) = 0 then
18       begin
19         Result := Index;
20         Break;
21       end;
22     end;
23   end;
24 
25 var
26   A:array[1..32] of Ansichar;
27   P1,P2:PAnsiChar;
28   Len:Integer;
29   wDay,wMonth,wYear,wHour,wMinute,wSec:Word;
30   D:TDateTime;
31 begin
32  //P1 := '  Mon, 12 Aug 2013 16:20:35 GMT';
33   Result := 0;
34   P1 := pSour;
35   P2 := @A[1];
36   Len := 31;
37   while((Len > 0) and (P1^ <>#0)) do
38   begin
39     P2^ := P1^;
40     Inc(P1);
41     Inc(p2);
42     Dec(Len);
43   end;
44   P2^ := #0;
45 
46   P1 := @A[1];
47   while((P1^<>',') and (P1^ <>#0)) do Inc(P1);Inc(p1);
48 
49   //12
50   while((P1^ <> #32) and (P1^ <>#0)) do Inc(P1);Inc(p1);P2 := P1;
51   while((P2^ <> #32) and (P2^ <>#0)) do Inc(P2); P2^ := #0;
52   wDay := StrToIntDef(P1,-1);
53 
54   //Aug
55   P1 := P2; Inc(P1);P2 := P1;
56   while( (P2^<>#32) and (P2^ <>#0)) do Inc(P2);P2^ := #0;
57   wMonth := GetMonthDig(P1);
58   if wMonth = 0 then
59     Exit;
60 
61   //2013
62   P1 := P2; Inc(P1);P2 := P1;
63   while( (P2^<>#32) and (P2^ <>#0) ) do Inc(P2);P2^ := #0;
64   wYear := StrToIntDef(P1,-1);
65   if wYear = 0 then
66     Exit;
67 
68   //Hour
69   P1 := P2; Inc(P1);P2 := P1;
70   while((P2^<>':') and (P2^ <>#0)) do Inc(P2);P2^ := #0;
71   wHour := StrToIntDef(P1,-1);
72   if wHour < 0 then
73     Exit;
74 
75   //Min
76   P1 := P2; Inc(P1);P2 := P1;
77   while((P2^<>':') and (P2^ <>#0)) do Inc(P2);P2^ := #0;
78   wMinute := StrToIntDef(P1,-1);
79   if wMinute < 0 then
80      Exit;
81 
82   //Sec
83   P1 := P2; Inc(P1);P2 := P1;
84   while((P2^<>#32) and (P2^ <>#0)) do Inc(P2);P2^ := #0;
85   wSec := StrToIntDef(P1,-1);
86   if wSec < 0 then
87     Exit;
88 
89   Result := EnCodeDateTime(wYear,wMonth,wDay,wHour,wMinute,wSec,0);
90 
91 end;

TDateTime 转换成 GMT 时间格式

 1 function DateTimeToGMT(const ADate:TDateTime):string;
 2 const
 3   WEEK:array[1..7] of PChar = ('Sun','Mon','Tues','Wed','Thur','Fri','Sat');
 4   MonthDig:array[1..12] of PChar =
 5     ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
 6 
 7 var
 8   wWeek,wYear,wMonth,wDay,wHour,wMin,wSec,wMilliSec:Word;
 9   A:array[1..32] of AnsiChar;
10   P1,P2:PAnsiChar;
11   sWeek,sMonth:string;
12 begin
13   DecodeDateTime(ADate,wYear,wMonth,wDay,wHour,wMin,wSec,wMilliSec);
14   wWeek := DayOfWeek(ADate);
15   sWeek  := WEEK[wWeek];
16   sMonth := MonthDig[wMonth];
17   Result := Format(' %s, %d %s %d %d:%d:%d GMT',[sWeek,wDay,sMonth,wYear,wHour,wMin,wSec]);
18 end;