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將...