Delphi中将GMT时间转换成本地时间的方法:
1. 定义一个枚举类型
type
TMonth= (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec); //定义一个枚举类型
2.在 implementation 下 引用以下单元.
uses
DateUtils, TypInfo;
3.函数实现如下:
function ConvertGMTTimeToLocalTime(GMTTimeStr: string): string;
var
TimeStrList: TStringList;
Month: string;
LocalTime: TDateTime;
begin
//GMTTIME Tue, 02 Dec 2014 05:34:15 GMT
Result := '';
if Trim(GMTTimeStr) = '' then Exit;
try
GMTTimeStr := Copy(GMTTimeStr, Pos(',', GMTTimeStr) + 1, MaxInt);
GMTTimeStr := StringReplace(GMTTimeStr, 'GMT', '', []);
GMTTimeStr := Trim(GMTTimeStr);
TimeStrList := TStringList.Create;
while (Pos(' ', GMTTimeStr) > 0) do
begin
TimeStrList.Add(Copy(GMTTimeStr, 1, Pos(' ', GMTTimeStr) - 1));
GMTTimeStr := Copy(GMTTimeStr, Pos(' ', GMTTimeStr) + 1, MaxInt);
end;
TimeStrList.Add(GMTTimeStr);
case TMonth(GetEnumValue(TypeInfo(TMonth), TimeStrList[1])) of
Jan: Month := '01';
Feb: Month := '02';
Mar: Month := '03';
Apr: Month := '04';
May: Month := '05';
Jun: Month := '06';
Jul: Month := '07';
Aug: Month := '08';
Sep: Month := '09';
Oct: Month := '10';
Nov: Month := '11';
Dec: Month := '12';
end;
LocalTime := StrToDateTime(TimeStrList[2] + '-' + Month + '-' + TimeStrList[0] + ' ' + TimeStrList[3]);
LocalTime := IncHour(LocalTime, 8);
Result := FormatDateTime('YYYY-MM-DD HH:MM:SS', LocalTime);
finally
FreeAndNil(TimeStrList);
end;
end;