TDateTime转UTC的时间差
需求:返回用分钟表示的主计算机上的时间和全球标准时间 (UTC) 之间的时间差,如:2010-01-10 09:07:54,与UTC之间的时间差应为:1263085674.
调用方法:
getTimezoneOffset(StrToDateTime('2010-01-10 09:07:54'));
实现代码:
//功能:获取本机时间区
function getTimeZone:integer;    
var     
  m_timezone:TIME_ZONE_INFORMATION;     
  i:integer;     
  dTimezone:double;     
  iTimezone:integer;     
begin     
  GetTimeZoneInformation(m_timezone);     
  i := m_timezone.Bias;     
  dTimezone := -1 * (i / 60);     
  iTimezone := Trunc(dTimezone);     
  Result := iTimezone;     
end; 
//功能:返回用分钟表示的主计算机上的时间和全球标准时间 (UTC) 之间的时间差,
function getTimezoneOffset(ADateTime:TDateTime):extended;    
var     
  x,y : extended;     
  iYear,iMonth,iDay : word;     
  iHour,iMin,iSec,iMSec : word;     
  iTimeZone : integer;     
begin     
  iTimeZone := getTimeZone;     
  DecodeDateTime(ADateTime,iYear,iMonth,iDay,iHour,iMin,iSec,iMSec);     
  x := (EncodeDate(iYear,iMonth,iDay) - EncodeDate(1970,1,1)) * 86400;     
  y := iHour * 3600 + iMin * 60 + iSec;     
  x := x + y - (iTimeZone * 3600);     
  Result := x;     
end;
//功能:将UTC时间值转为成当前系统时间   
function UTCTime2String(uiTime:Cardinal):string;    
var    
  sDateTime : TDateTime;    
  iTimeZone : integer;    
begin    
  iTimeZone := getTimeZone;    
  sDateTime := EncodeDate(1970,1,1) + ((uiTime + iTimeZone * 3600) / 86400);    
  Result := FormatDateTime('yyyy-mm-dd hh:mm:ss',sDateTime);    
end;
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号