StrToDate 的 overload 要如何使用? |
答題得分者是:OsX
|
shinhrn
中階會員 發表:54 回覆:165 積分:83 註冊:2002-06-05 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
shinhrn
中階會員 發表:54 回覆:165 積分:83 註冊:2002-06-05 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
function StrToDate(const S: string; const FormatSettings: TFormatSettings): TDateTime; overload; var sy:string; begin sy:=copy(S,1,pos('/',S)-1); if length(sy) <=3 then //假設小於等於三位數為民國年 begin sy:=inttostr(strtoint(sy) 1911); //轉integer後 1911再轉為字串 S:=sy copy(S,pos('/'S),length(S)); end; result:=strtodate(S); end;直覺反應這樣寫 似乎不需要第二個參數 建議funtion name與系統的區隔開來比較好 |
shinhrn
中階會員 發表:54 回覆:165 積分:83 註冊:2002-06-05 發送簡訊給我 |
引言:對不起又是我沒說清楚 function StrToDate(const S: string; const FormatSettings: TFormatSettings): TDateTime; begin if not TryStrToDate(S, Result, FormatSettings) then ConvertErrorFmt(@SInvalidDate, [S]); end; 這是syutils裡就有提供的function 我是不會用而且不知道它是否可以達到我的需求ㄋ...?function StrToDate(const S: string; const FormatSettings: TFormatSettings): TDateTime; overload; var sy:string; begin sy:=copy(S,1,pos('/',S)-1); if length(sy) <=3 then //假設小於等於三位數為民國年 begin sy:=inttostr(strtoint(sy) 1911); //轉integer後 1911再轉為字串 S:=sy copy(S,pos('/'S),length(S)); end; result:=strtodate(S); end;直覺反應這樣寫 似乎不需要第二個參數 建議funtion name與系統的區隔開來比較好 |
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
shinhrn
中階會員 發表:54 回覆:165 積分:83 註冊:2002-06-05 發送簡訊給我 |
引言: 如果要達成如您所說的可以輸入民國年或是西元年 那麼 就可能需要自行寫code來處理囉喔,這樣喔, 因為我是用 ShortDateFormat:='eeee/mm/dd'; ShortDateFormat:='yyyy/mm/dd'; 來做date切換的 DATEDBASE 的date fields它都可以自動轉換 可是發現StrToDate(const S: string): TDateTime;並不受ShortDateFormat影響 我還以為 function StrToDate(const S: string; const FormatSettings: TFormatSettings): TDateTime; overload; 可以達到與 FormatDateTime 相對的功能 將str中的直接轉換成系統中的tdate勒 發表人 - shinhrn 於 2004/05/14 12:06:24 |
OsX
版主 發表:6 回覆:151 積分:111 註冊:2003-05-03 發送簡訊給我 |
試試看下面程式,
procedure TForm1.Button1Click(Sender: TObject); var ADate: String; ADate2: TDate; AFormat, AFormat2: TFormatSettings; begin AFormat.ShortDateFormat := 'ee/mm/dd'; AFormat.DateSeparator := '/'; ADate := '94/05/15'; ADate2 := StrToDate( ADate, AFormat ); AFormat2.ShortDateFormat := 'yyyy/mm/dd'; AFormat2.DateSeparator := '/'; ShowMessage( DateToStr( StrToDate( ADate, AFormat ), AFormat2 ) ); end; |
shinhrn
中階會員 發表:54 回覆:165 積分:83 註冊:2002-06-05 發送簡訊給我 |
引言: 試試看下面程式,procedure TForm1.Button1Click(Sender: TObject); var ADate: String; ADate2: TDate; AFormat, AFormat2: TFormatSettings; begin AFormat.ShortDateFormat := 'ee/mm/dd'; AFormat.DateSeparator := '/'; ADate := '94/05/15'; ADate2 := StrToDate( ADate, AFormat ); AFormat2.ShortDateFormat := 'yyyy/mm/dd'; AFormat2.DateSeparator := '/'; ShowMessage( DateToStr( StrToDate( ADate, AFormat ), AFormat2 ) ); end;正確,謝謝你... |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |