1. 程式人生 > >關於Delphi7中日期函式StrtoDate的正確用法 win7報錯

關於Delphi7中日期函式StrtoDate的正確用法 win7報錯

轉載請註明出處:http://blog.csdn.net/dydn120w/article/details/51118610 作者:dydn120w

1.StrToDate為delphi7中字串轉換為日期的函式
例如:

var 
  Dat:Tdate;
begin
  Dat:=StrToDate('2016-4-11');  //這裡會將'2016-4-11'轉換為Tdate型別,就是日期型別
end; 

【在網上查詢的資料不夠完美,做法基本是讓系統適用程式】

這段程式碼本身是沒有問題的,但是發現如果更改了系統日期分隔符(例如將系統日期分隔符更改為2016/4/11,“-”變為"/"),StrToDate就會報錯,提示:'2016-4-11'不是有效日期型別,通過這個可以說明StrToDate函式是轉換的依據就是系統當前日期分隔符,所以我們要像上面程式碼將字串轉換為日期型別,必須先同步當前系統日期分隔符,以讓程式適應系統。


//宣告一個返回當前日期分隔符的函式
function GetDateFormat():string;
var
  SysFrset: TFormatSettings;
begin
  Result:='';
  GetLocaleFormatSettings(GetUserDefaultLCID, SysFrset);
  Result:=SysFrset.DateSeparator;  //DateSeparator當前系統日期分隔符
end;

以下為正確的字串轉日期的方法 適用XP win7
var 
  Dat:Tdate;
  Fr:string;//儲存日期格式的字串變數
begin
  Fr:=GetDateFormat;//獲取當前系統日期分隔符
  Dat:=StrToDate(Format('2016%s4%s11',[Fr,Fr]));  //這樣始終都會跟當前系統日期分隔符同步,這樣不管你把當前系統日期分隔符設定為什麼樣都不會報錯
end;