請教:如何統計一個月中的工作日和休息日的天數?

apollp 2003-09-05 11:27:34
如果用FOR循環判斷是星期幾應該可以的,可是我想知道有沒有其他的辦法?
...全文
192 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Maple119 2003-09-05
  • 打赏
  • 举报
回复
没有其它办法了.你还是用循环来统计吧.别钻牛角尖了.
apollp 2003-09-05
  • 打赏
  • 举报
回复
就是說還是要循環一個月來自己統計?沒有其它的方法了麼?
newnewworm 2003-09-05
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
year:string;
month:integer;
day,i,j:integer;
dt:TDate;
begin
year:=form1.Edit1.Text;
for month:=1 to 12 do
begin
dt:=strtodate(year+'-'+inttostr(month)+'-'+'1');
day:=form1.getdays(dt);
for i:=1 to day do
begin
j:=dayoftheweek(strtodate(year+'-'+inttostr(month)+'-'+inttostr(i)));
if (j=6) or (j=7) then
begin
form1.ListBox1.Items.Add(year+'-'+inttostr(month)+'-'+inttostr(i));
end;
end;
end;
end;

function TForm1.getdays(var dt: TDate): integer;
var
d:TDate;
year,month,day:word;
i,j,m:integer;
s,s1:string;
str:TStringList;
begin
str:=TStringList.Create;
str.Clear;
decodedate(incmonth(dt,1),year,month,day);
d:=encodedate(year,month,1)-1;
s:=datetostr(d);
i:=length(s);
for j:=1 to i do
begin
if s[j]='-' then
begin
str.Add(inttostr(j));
end;
end;
s1:=copy(s,strtoint(str.Strings[1])+1,i-strtoint(str.Strings[1]));
result:=strtoint(s1);
end;

fansnaf 2003-09-05
  • 打赏
  • 举报
回复
如果只是判断周末的话,
有函数的,
如果还有自己定的休息日,
这要用专门的一个表来记录
fengjn 2003-09-05
  • 打赏
  • 举报
回复
可以使用dayofweek函数,循环着1个月来判断。
大地精灵 2003-09-05
  • 打赏
  • 举报
回复
好象没有相关函数,还是自己写吧
Shiyl 2003-09-05
  • 打赏
  • 举报
回复
没有了。另外你说的休息日只是指星期六星期天?如果国庆之类的节假日你统计吗?
所以有些困难
apollp 2003-09-05
  • 打赏
  • 举报
回复
TO: Maple119(枫叶)
我是想看看有沒有相關的函數等,我總是自己把相關的函數自己寫完了才發現Delphi有這樣的函數.


TO:All
那麼謝謝大家的參與,我要結帖了.

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧