http://blog.csdn.net/yanjiaye520/article/details/7887463
 
http://jingyan.baidu.com/article/5225f26b08be52e6fa0908b2.html

function GetInternetTime: string;
var
XmlHttp: OleVariant;
datetxt: string;
DateLst: TStringList;
mon: string;
timeGMT, GetNetTime: TDateTime;
s: string;
settings: TFormatSettings;
begin
XmlHttp := CreateOleObject('Microsoft.XMLHTTP');
XmlHttp.Open('GET', 'http://open.baidu.com/special/time/', False);
XmlHttp.Send;

datetxt := XmlHttp.GetResponseHeader('Date');
datetxt := Copy(datetxt, Pos(',', datetxt) + 1, 100);
datetxt := StringReplace(datetxt, 'GMT', '', []);
datetxt := Trim(datetxt);
if datetxt = '' then Exit;
DateLst := TStringList.Create;
while Pos(' ', datetxt) > 0 do
begin
DateLst.Add(Copy(datetxt, 1, Pos(' ', datetxt) - 1));
datetxt := Copy(datetxt, Pos(' ', datetxt) + 1, 100);
end;
DateLst.Add(datetxt);
if DateLst[1] = 'Jan' then
mon := '01'
else if DateLst[1] = 'Feb' then
mon := '02'
else if DateLst[1] = 'Mar' then
mon := '03'
else if DateLst[1] = 'Apr' then
mon := '04'
else if DateLst[1] = 'Mar' then
mon := '05'
else if DateLst[1] = 'Jun' then
mon := '06'
else if DateLst[1] = 'Jul' then
mon := '07'
else if DateLst[1] = 'Aug' then
mon := '08'
else if DateLst[1] = 'Sep' then
mon := '09'
else if DateLst[1] = 'Oct' then
mon := '10'
else if DateLst[1] = 'Nov' then
mon := '11'
else if DateLst[1] = 'Dec' then
mon := '12';
s := DateLst[2] + '-' + mon + '-' + DateLst[0] + ' ' + DateLst[3];
//标准时间
// ShowMessage(s);
// '/' or '-'

settings.DateSeparator := '-';

settings.TimeSeparator := ':';

settings.ShortDateFormat := 'yyyy-mm-dd';

settings.ShortTimeFormat := 'hh:nn:ss';//dt:= strToDateTime('2010-3-19 08:09:10',settings);

timeGMT := StrToDateTime(DateLst[2] + '-' + mon + '-' + DateLst[0] + ' ' + DateLst[3],settings);
//转换时区
GetNetTime := IncHour(TimeGMT, 8);
// ShowMessage(FormatDateTime('yyyy年mm月dd日 HH:NN:SS', GetNetTime));
FreeAndNil(DateLst);
Result:= FormatDateTime('yyyy年mm月dd日 HH:NN:SS', GetNetTime);
end;

 

 

delphi 获取北京时间

标签: delphistringtimerdate
 分类:
 

方法一:

 

[delphi] view plain copy
 
 print?
  1. uses  
  2.    ComObj, DateUtils;  
  3.   
  4. function GetInternetTime: string;  
  5. var  
  6.   XmlHttp: OleVariant;  
  7.   datetxt: string;  
  8.   DateLst: TStringList;  
  9.   mon: string;  
  10.   timeGMT, GetNetTime: TDateTime;  
  11.   s: string;  
  12. begin  
  13.   XmlHttp := CreateOleObject('Microsoft.XMLHTTP');  
  14.   XmlHttp.Open('GET', 'http://open.baidu.com/special/time/', False);  
  15.   XmlHttp.Send;  
  16.   
  17.   datetxt := XmlHttp.GetResponseHeader('Date');   
  18.   datetxt := Copy(datetxt, Pos(',', datetxt) + 1, 100);  
  19.   datetxt := StringReplace(datetxt, 'GMT', '', []);  
  20.   datetxt := Trim(datetxt);  
  21.   if datetxt = '' then Exit;  
  22.   DateLst := TStringList.Create;  
  23.   while Pos(' ', datetxt) > do  
  24.   begin  
  25.     DateLst.Add(Copy(datetxt, 1, Pos(' ', datetxt) - 1));  
  26.     datetxt := Copy(datetxt, Pos(' ', datetxt) + 1, 100);  
  27.   end;  
  28.   DateLst.Add(datetxt);  
  29.   if DateLst[1] = 'Jan' then  
  30.     mon := '01'  
  31.   else if DateLst[1] = 'Feb' then  
  32.     mon := '02'  
  33.   else if DateLst[1] = 'Mar' then  
  34.     mon := '03'  
  35.   else if DateLst[1] = 'Apr' then  
  36.     mon := '04'  
  37.   else if DateLst[1] = 'Mar' then  
  38.     mon := '05'  
  39.   else if DateLst[1] = 'Jun' then  
  40.     mon := '06'  
  41.   else if DateLst[1] = 'Jul' then  
  42.     mon := '07'  
  43.   else if DateLst[1] = 'Aug' then  
  44.     mon := '08'  
  45.   else if DateLst[1] = 'Sep' then  
  46.     mon := '09'  
  47.   else if DateLst[1] = 'Oct' then  
  48.     mon := '10'  
  49.   else if DateLst[1] = 'Nov' then  
  50.     mon := '11'  
  51.   else if DateLst[1] = 'Dec' then  
  52.     mon := '12';  
  53.   s := DateLst[2] + '-' + mon + '-' + DateLst[0] + ' ' + DateLst[3];  
  54. //标准时间  
  55. //  ShowMessage(s);  
  56. // '/' or '-'  
  57.   timeGMT := StrToDateTime(DateLst[2] + '-' + mon + '-' + DateLst[0] + ' ' + DateLst[3]);  
  58.   //转换时区  
  59.   GetNetTime := IncHour(TimeGMT, 8);  
  60. //  ShowMessage(FormatDateTime('yyyy年mm月dd日 HH:NN:SS', GetNetTime));  
  61.   FreeAndNil(DateLst);  
  62.   Result:= FormatDateTime('yyyy年mm月dd日 HH:NN:SS', GetNetTime);  
  63. end;  

 

 

方法二:

 

[delphi] view plain copy
 
 print?
  1. procedure TForm1.FormCreate(Sender: TObject);  
  2. begin  
  3.   WebBrowser.Navigate('http://www.timedate.cn/worldclock/ti.asp');  
  4.   tmr1.Enabled := True;  
  5. end;  
  6.   
  7. procedure TForm1.WebBrowserStatusTextChange(Sender: TObject;  
  8.   const Text: WideString);  
  9. var  
  10.   strText: string;  
  11. begin  
  12.   strText := Text;  
  13.   if strText = '完成' Then  
  14.   begin  
  15.     Caption := WebBrowser.OleObject.Document.Body.Innertext;  
  16.     tmr1.Enabled := True  
  17.   end;  
  18. end;  
  19.   
  20. procedure TForm1.tmr1Timer(Sender: TObject);  
  21. begin  
  22.   tmr1.Enabled := False;  
  23.   WebBrowser.Refresh  
  24. end;  

 

delphi strtodatetime 这个函数在win7下出错

  • 浏览:483
  • |
  • 更新:2014-01-11 23:58

strtodatetime 这个函数在win7下出错例如 strtodatetime('2010-11-25') 在win7下出错 , 但在xp系统下正常解决方法日期格式不一样,你需要统一日期格式,可以再控制面板中修改,或者用代码实现Delphi(Pascal) code

var

settings: TFormatSettings;

dt: TDateTime;

begin

GetLocaleFormatSettings(GetUserDefaultLCID, settings);

settings.DateSeparator := '-';

settings.TimeSeparator := ':';

settings.ShortDateFormat := 'yyyy-mm-dd';

settings.ShortTimeFormat := 'hh:nn:ss';dt:= strToDateTime('2010-3-19 08:09:10',settings);

end;