全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3597
推到 Plurk!
推到 Facebook!

StrToDate 的 overload 要如何使用?

答題得分者是:OsX
shinhrn
中階會員


發表:54
回覆:165
積分:83
註冊:2002-06-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-14 10:13:06 IP:218.162.xxx.xxx 未訂閱
我用d7,想使用 tranbankdate:=strtodate(Trdate,'EEMMDD'); 直接轉換所要的日期格式,可是它會show以下的錯誤,不知如何解決? There is no overloaded version of 'StrToDate' that can be called with these arguments 發表人 - shinhrn 於 2004/05/14 10:35:19
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-14 10:23:53 IP:210.243.xxx.xxx 未訂閱
因為strtodate所需要傳入的參數只需要一個字串 date本身就是日期型態囉,再轉一次日期型態似乎... 如果是取回字串 可以使用 formatdatetime('eemmdd',date);
shinhrn
中階會員


發表:54
回覆:165
積分:83
註冊:2002-06-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-14 10:56:53 IP:218.162.xxx.xxx 未訂閱
引言: 因為strtodate所需要傳入的參數只需要一個字串 date本身就是日期型態囉,再轉一次日期型態似乎... 如果是取回字串 可以使用 formatdatetime('eemmdd',date);
真是不好意思我舉錯例子了抱歉, 我想要的功能是類似以下的功能
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-05-14 11:25:21 IP:210.243.xxx.xxx 未訂閱
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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-05-14 11:34:44 IP:218.162.xxx.xxx 未訂閱
引言:
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與系統的區隔開來比較好
對不起又是我沒說清楚 function StrToDate(const S: string; const FormatSettings: TFormatSettings): TDateTime; begin if not TryStrToDate(S, Result, FormatSettings) then ConvertErrorFmt(@SInvalidDate, [S]); end; 這是syutils裡就有提供的function 我是不會用而且不知道它是否可以達到我的需求ㄋ...?
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-05-14 11:39:21 IP:210.243.xxx.xxx 未訂閱
如果要達成如您所說的可以輸入民國年或是西元年 那麼 就可能需要自行寫code來處理囉
shinhrn
中階會員


發表:54
回覆:165
積分:83
註冊:2002-06-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-05-14 11:52:26 IP:218.162.xxx.xxx 未訂閱
引言: 如果要達成如您所說的可以輸入民國年或是西元年 那麼 就可能需要自行寫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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-05-14 13:34:39 IP:211.76.xxx.xxx 未訂閱
試試看下面程式,
 
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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-05-14 14:50:03 IP:218.162.xxx.xxx 未訂閱
引言: 試試看下面程式,
 
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;
正確,謝謝你...
系統時間:2024-05-04 11:42:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!