關於Delphi7中日期函式StrtoDate的正確用法 win7報錯
阿新 • • 發佈:2019-02-02
轉載請註明出處: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;