首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delphi计算小时数

Delphi计算小时数
EN

Stack Overflow用户
提问于 2012-06-01 18:27:13
回答 2查看 921关注 0票数 0

我对delphi有一个问题,我创建了一个计算工作时间的程序,这是一段代码:

代码语言:javascript
复制
procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c,d,e,f,g,h,i,l,m,n,o,p,q,r,s,t,u,v,z,a1,b1,c1,d1,e1,f1:TTime;
begin
  a := StrToTime(Edit1.Text);
  b := StrToTime(Edit2.Text);
  c := StrToTime(Edit3.Text);
  d := StrToTime(Edit4.Text);
  e := StrToTime(Edit5.Text);
  f := StrToTime(Edit6.Text);
  g := StrToTime(Edit7.Text);
  h := StrToTime(Edit8.Text);
  i := StrToTime(Edit9.Text);
  l := StrToTime(Edit10.Text);
  m := StrToTime(Edit11.Text);
  n := StrToTime(Edit12.Text);
  o := StrToTime(Edit13.Text);
  p := StrToTime(Edit14.Text);
  q := StrToTime(Edit15.Text);
  r := StrToTime(Edit17.Text);
  s := StrToTime(Edit18.Text);
  t := StrToTime(Edit19.Text);
  u := StrToTime(Edit20.Text);
  v := StrToTime(Edit21.Text);
  z := StrToTime(Edit22.Text);
  a1 := StrToTime(Edit23.Text);
  b1 := StrToTime(Edit24.Text);
  c1 := StrToTime(Edit25.Text);
  d1 := StrToTime(Edit26.Text);
  e1 := StrToTime(Edit27.Text);
  f1 := StrToTime(Edit28.Text);
  Memo1.Text:=TimeTostr(b-a+d-c+f-e+h-g+l-i+n-m+o-n+q-p+s-r+u-t+z-v+b1-a1+d1-c1+f1-e1);
end;

end.    

但是当我单击calculate时,如果总时间超过24小时,回到0,我该如何解决这个问题?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-01 22:55:05

以下是如何解决当前问题的方法:

  1. 以声明a、b、c等的方式声明一个新变量TotalTime
  2. 然后删除最后一行,并将其替换为:

代码语言:javascript
复制
 TotalTime := b-a+d-c+f-e+h-g+l-i+n-m+o-n+q-p+s-r+u-t+z-v+b1-a1+d1-c1+f1-e1;
 Memo1.Text:= IntToStr(Trunc(TotalTime))+' day(s), '+ TimeTostr(TotalTime);

这应该会显示如下所示:3 day(s), 07:04:45

除了这个变化,如果我是你,我会重新考虑整个方法。学习别人在这里说的话,不要让自己受到负面投票或负面评论的影响。

票数 1
EN

Stack Overflow用户

发布于 2012-06-01 18:35:38

人们不得不猜测你真正想要的是什么,但我认为ab分别代表了一天工作的开始和结束,cd也是如此,依此类推。然后你想要,而不是b - a + d - c + ...

代码语言:javascript
复制
HoursBetween(a, b) + HoursBetween(c, d) + ...

(uses DateUtils)。

更新

在一条评论中,OP提出了一项请求,要求也查看会议记录。执行以下操作:

代码语言:javascript
复制
var
  minspan: integer;

...

minspan := MinutesBetween(a, b) + MinutesBetween(c, d) + ...;
Memo1.Text := IntToStr(minspan div 60) + ':' + IntToStr(minspan mod 60);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10848616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档