線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1474
推到 Plurk!
推到 Facebook!

如何判定國定假日

尚未結案
tea15
初階會員


發表:64
回覆:72
積分:27
註冊:2005-06-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-06 08:45:27 IP:220.130.xxx.xxx 未訂閱
你們好.. 由這個程式,我還加一個判斷點,就是判斷國定假日的.. 條件一樣,但我必須在往前一天或往後一天再加上一個判斷是否為國定假日… 然後跳過國定假日,當然還是要判斷是否為週末. 以下是我的程式碼 private { Private declarations } d:integer; e,f:string; a:word; Function MyWorkDate(InDate : TDate) : TDate; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin datetimepicker1.Date:=EncodeDate(strtoint(copy(edit1.Text,1,4)),strtoint(copy(edit1.Text,5,2)),strtoint(copy(edit1.Text,7,2))); Edit2.Text:=DateToStr(MyWorkDate(DateTimePicker1.Date)); e:=datetostr(datetimepicker1.Date); f:=copy(e,5,4); end; Function Tform1.MyWorkDate(InDate : TDate) : TDate; var DOW :word; R : TDate; begin d:=1; R := InDate; DOW := DayOfTheWeek(R); if RadioButton1.Checked then if (f='0101') or (f='0102')or (f='0228') then R := InDate-d; begin Case DOW of 6 : R := InDate -1; //變成本周星期五 7 : R := InDate -2; //變成本周星期五 1 : R := InDate -3; //變成本周星期五 else R := InDate-d; //都向後推一天 end; Case DOW of 6 : R := InDate -1; //變成本周星期五 7 : R := InDate -2; //變成本周星期五 1 : R := InDate -3; //變成本周星期五 else R := InDate-d; //都向後推一天 end; end; label1.caption := '星期' IntToStr(DayOfTheWeek(R)); Result := R; end;
chris_shieh
高階會員


發表:46
回覆:308
積分:240
註冊:2004-04-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-06 18:15:09 IP:203.70.xxx.xxx 未訂閱
您的意思不太清楚 不過MyWorkDate這一段有點問題 ,我猜你是要寫成這樣
function Tform1.MyWorkDate(InDate: TDate): TDate;
var
  DOW: word;
  R: TDate;
begin
  d := 1;
  R := InDate;
  if RadioButton1.Checked then
  begin
    if (f = '0101') or (f = '0102') or (f = '0228') then
      R := InDate - d;
    DOW := DayOfTheWeek(R);
    case DOW of
      6: R := InDate - 1; //變成本周星期五
      7: R := InDate - 2; //變成本周星期五
      1: R := InDate - 3; //變成本周星期五
    else
      R := InDate - d; //都向後推一天
    end;
  end;
  label1.caption := '星期'   IntToStr(DayOfTheWeek(R));
  Result := R;
end;
@瞭解越多.懂得越少@
tea15
初階會員


發表:64
回覆:72
積分:27
註冊:2005-06-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-07 09:05:48 IP:220.130.xxx.xxx 未訂閱
不好意思... 我的程式碼的意思是 0101-->是指一月一日元旦 0228-->是指和平紀念日    依此類推,就是指所有的國定假日都要跳開.. 並且判斷是否為週六或週日.. 再往前一天或兩天…等等。    反正就是不能碰到假日就是了.. 但是我現在只完成週末的部份...國定假日真不知道該怎麼修改..
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-09-07 17:02:07 IP:210.65.xxx.xxx 未訂閱
Hi tea15,    Hope helpful !!    http://delphi.ktop.com.tw/loadfile.php?TOPICID=24424968&CC=546252 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
系統時間:2024-06-24 19:43:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!