字串轉換成時間型別。
時間顯示控制元件用的是datetimepicker,
目的是把每年的第一天顯示在datetimepicker控制元件中:
var
sdate:string;
sdate:=formatdatetime('yyyy',date);//取年,如2012
sdate:=sdate+'-01-01'; //把上一步中取的年加上-01-01 即為每年的第一天,如 2012-01-01
datetimepicker1.Date:=strtodate(sdate);//進行資料型別的轉換,把字串型別轉換成時間型別
運行時給出的錯誤提示是: ‘2012-01-01’ is not a valid date and time .
請問我這樣處理有問題嗎?哪里的問題?
另外還有好的辦法嗎?
請詳細解釋,謝謝。
uj5u.com熱心網友回復:
補充:同一程式在XP和Windows 2003 下都沒問題,但是在2008下運行就出現該錯誤提示。uj5u.com熱心網友回復:
uses DateUtils;StartOfTheYear
uj5u.com熱心網友回復:
study
uj5u.com熱心網友回復:
我這現在也是這樣做的,就是格式不統一:
資料庫中插入的是 2012-1-1 ,而不是 2012-01-01
uj5u.com熱心網友回復:
注意字串時間是有個格式的,比如2012-12-1,2012/12/1等,你要注意你當前的分割符是'/'還是‘-’。uj5u.com熱心網友回復:
呵呵,我說的不是分隔符,而是2012年1月1日是 2012-01-01 還是 2012-1-1 ,是十位數用0補齊 。
uj5u.com熱心網友回復:
設定系統的時間格式。這種轉化一般是系統的時間格式與你轉化的字符中不同,比如系統時間格式:2012/01/01,而你現在要轉2012-01-01,系統會認為這個時間格式是不合法的!uj5u.com熱心網友回復:
將控制面板中時間區域選擇的短日期格式改為yyyy-mm-dd,也可在delphi中調 用相關api直接修改。uj5u.com熱心網友回復:
就是時間格式的問題,本機的時間格式和你輸入的時間格式不一樣,才會有這個提示。鑒定完畢。uj5u.com熱心網友回復:
var
vFormatSettings: TFormatSettings;
begin
with vFormatSettings do
begin
CurrencyString := '';
CurrencyFormat := 0;
NegCurrFormat := 0;
ThousandSeparator := ',';
DecimalSeparator := '.';
CurrencyDecimals := 0;
DateSeparator := '-'; //日期分隔符
ShortDateFormat := 'yyyy-mm-dd';
LongDateFormat := 'yyyy-mm-dd';
TimeSeparator := ':'; //時間分隔符
TimeAMString := 'am';
TimePMString := 'pm';
ShortTimeFormat := 'hh:mm' ;
LongTimeFormat := 'hh:mm:ss';
ListSeparator := ',';
end;
Result := Sysutils.StrToDateTime(S, vFormatSettings);
end;
uj5u.com熱心網友回復:
或者修改系統日期的格式uj5u.com熱心網友回復:
在工程檔案中加上這個就可以了。按你自己的需求設定ShortDataFormat格式。Application.Initialize;
DateSeparator := '-';
ShortDateFormat := 'yyyy-MM-dd';
Application.UpdateFormatSettings := False;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/146377.html
標籤:語言基礎/算法/系統設計
