FastReport从Date_From和Date_To字段计算小时数

时间:2016-07-14 07:07:53

标签: delphi datetime fastreport

我在Delphi中使用FastReport。我有以下字段:

DATE_FROM  (example: 01.05.2015.)
TIME_FROM  (example: 13:00)

DATE_TO    (example: 02.05.2015.)
TIME_TO    (example: 10:00)

我需要计算这些日期之间经过了多少天和几小时。在这个例子中,它不到24小时......所以结果应该是:

0 days   21 hours

如何实现?

1 个答案:

答案 0 :(得分:-1)

我会安装TurboPower Orpheus。在您的uses语句中包含OvcDate单元。这个例子是用柏林10.1架构师制作的,并且合理向下兼容。 Orpheus有很多版本。

procedure TForm2.SpeedButton1Click(Sender: TObject);
var
  date1 : TDateTime;
  date2 : TDateTime;
  rdt1 : TStDateTimeRec;
  rdt2 : TStDateTimeRec;
  days : Integer;
  seconds : Integer;
  hrs : Integer;
  min : Integer;
  sec : Integer;
begin
  date1 := StrToDateTime('01/05/2015 13:00');
  date2 := StrToDateTime('02/05/2015 10:00');
  rdt1.D := DateTimeToStDate(date1);
  rdt2.D := DateTimeToStDate(date2);
  rdt1.T := DateTimeToStTime(date1);
  rdt2.T := DateTimeToStTime(date2);
  DateTimeDiff(rdt1, rdt2, days, seconds);
  hrs := seconds div SecondsInHour;
  min := ((seconds - (hrs * SecondsInHour)) div SecondsInMinute);
  sec := (seconds - (hrs * SecondsInHour) + (min * SecondsInMinute));
  sec := sec;
  // days = 30
  // seconds = 75600
  // hrs = 21
  // min = 0
  // sec = 0
end;

以上示例建立了概念证明并显示了计算的工作原理。您的输入是相关日期的1.5.2015和2.5.2015,这就是我使用的。

我会设置适当的计算字段并将此公式放在OnCalc事件中。确保建立一个机制来设置start和stop datetime字段。让DBMS完成剩下的工作。我恰好是最受欢迎的德尔福作家之一。 http://cc.embarcadero.com/PopularAuthors.aspx