delphi裡,倆長日期之間,求請假天數,不包含週末,急急急,100分

2022-11-05 22:56:58 字數 1934 閱讀 2892

1樓:聽不清啊

說個演算法吧,我沒有delphi環境。

做一個函式,將edit中的日期取出年月日,(可以使用copy()和val()函式);

再做一函式,計算y1-m1-d1到y2-m2-d2之間有幾天(設為d)

function days(y1,m1,d1,y2,m2,d2:integer):integer; //計算二個日期之間有幾天,1日~2日算2天

const md:array[1..12]of integer=(31,28,31,30,31,30,31,31,30,31,30,31);

var i,d,m:integer;

begin

if (y1=y2)and(m1=m2) then exit(d2-d1+1);

m:=12*(y2-y1)+m2;

d:=d2-d1+1;

for i:=m1 to m-1 do

begin

case (i-1) mod 12+1 of

1,3,5,7,8,10:inc(d,31);

4,6,9,11:inc(d,30);

2:if (y1 mod 4=0)and(y1 mod 100>0)or(y1 mod 400=0) then inc(d,29)else inc(d,28);

12:begin inc(d,31); inc(y1) end;

end;

end;

exit(d);

end;

上面的函式已經用excel驗證正確。

算出y1-m1-d1是星期幾(設為k(0~6))。

再用以下的方法算出請假天數:

i:=1; n:=0;

while i<=d do

begin

if (k>0)and(k<6)then inc(n);

if k<6 then inc(k) else k:=0;

inc(i);

end;

writeln('請天數為',n,'天');

2樓:匿名使用者

最簡單與最笨的方法,從開始日期迴圈到結束日期,依次判斷每天是否是週末,如果不是,在迴圈外定義的變數加1即可。

要不要考慮法定假日呢????

delphi tdatetime類,如何計算兩個時間的差?

3樓:匿名使用者

tdatetime是一個double型

假設兩個時間分別是date1,date2

1、x:=date2-date1;

2、x的整數部分表示的是天數

3、x的小數部分表示的是秒數,可以使用decodetime( x, hour, minute, second, msecond )函式分別得到小時、分鐘、秒和毫秒

4樓:

時間直接想減,結果是小數,單位是天

5樓:fit大蝦

樓上的說得沒錯,時間是可以直接相減的

例如x:=date2-date1; //x是相差的天數y:=x*24; //y是相差的小時數

z:=x*24*60; //z就是相差的分鐘數

delphi tdatetime類,如何計算兩個時間的差?

6樓:

時間是可以直接相減的

例如x:=date2-date1; //x是相差的天數y:=x*24; //y是相差的小時數

z:=x*24*60;  //z就是相差的分鐘數

7樓:fit大蝦

樓上的說得沒錯,時間是可以直接相減的

例如x:=date2-date1; //x是相差的天數y:=x*24; //y是相差的小時數

z:=x*24*60; //z就是相差的分鐘數

如何在vb裡進行日期格式轉換,如何在VB裡進行日期格式轉換

這裡的要點是設定返回值的型別為字串型別。private sub command1 click s1 20130924200000 dim s as string s format a,0000 00 00 00 00 00 print s end sub 如果取得資料比較規則那麼用下面的就行 new...

BIOS裡的系統時間,日期怎麼設定啊

入bios 按del或者f1等 一般第一個介面或者第一項就是時間設定。如果時間老是跳回去,進入後按回車就可以設定了,退出時別忘記儲存,考慮是不是bios電池沒電了,可以換個,一般是鈕釦電池 回答你好,很高興為你解答!開啟計算機電源,進入引導介面根據引導提示選擇快捷鍵進入bios程式,一般快捷鍵有 f...

為什麼ecel裡的資料會自動變成日期

以下方法可以解決這個問題 方法一 選定單元格 可以是多個單元格 後選擇選單 格式 單元格 或直接在單元格上單擊滑鼠右鍵後選擇 設定單元格格式 在開啟的 單元格格式 視窗中單擊 數字 選項卡,在 分類 中選定 文字 並 確定 即可。方法二 在輸入內容的前面加上一個英文半形的單引號,就是告訴excel將...