有关时间函数的问题(100分)

  • 主题发起人 主题发起人 swj
  • 开始时间 开始时间
S

swj

Unregistered / Unconfirmed
GUEST, unregistred user!
在delphi中有没有一个函数可以将当前时间和一个给定的时间之间算出秒数
如函数(当前时间,给定时间)=秒
 
没有,
自己写也不难啊??
 
应该没有,自己写啦,也不是很难。
 
unit SystemTime;

interface

uses
Windows, Messages, SysUtils, Classes,
Graphics,Controls, Forms, Dialogs, StdCtrls,ExtCtrls;

type
TSysTime = class(TObject)
private
//系统日期、时间
FStartDateTime : TDateTime;
// 定时器
FTimer : TTimer;
// 流逝时间变量
FElapsedTime : Integer;

procedure Timer(Sender: TObject);

protected

public
constructor Create; virtual;
destructor Destroy; override;
procedure SetNewTime(NewTime :TSystemTime);
procedure ResetTime;
end;

implementation

//构造器
constructor TSysTime.Create;

begin
//保存当前日期、时间
FStartDateTime := Now;
//生成定时器对象
FTimer := TTimer.Create(nil);
// 设定时钟间隔为一秒
FTimer.Interval := 1000;
//时钟事件
FTimer.OnTimer := Timer;
// 开始记时
FTimer.Enabled := True;
end;

//设定系统新时间
procedure TSysTime.SetNewTime(NewTime :
TSystemTime);
begin
SetLocalTime(NewTime);
end;

//流逝时间
procedure TSysTime.Timer(Sender: TObject);
begin
// 保存流逝的时间(以秒为单位),每秒加1
Inc(FElapsedTime);
end;

//恢复系统时钟
procedure TSysTime.ResetTime;

var
NewTime : TSystemTime;
tmTemp : Double;
dtTemp : TDateTime;

begin
//将流逝的时间转换为天数
tmTemp := FElapsedTime/86400;
//将流逝的时间加到原来的时间上
dtTemp := FStartDateTime + tmTemp;
//转换为Windows 32位时间格式
DateTimeToSystemTime(dtTemp, NewTime);
//设定时间
SetLocalTime(NewTime);
end;

//释放
destructor TSysTime.Destroy;
begin
//恢复系统时钟
ResetTime;
// 记时器停止
FTimer.Enabled := False;
// 释放时钟对象
FTimer.Free;
end;

end.
 
另外: 最好找到精确计时的Timer, 不用delphi提供的timer,它的精度不高。
 
(当前时间-给定时间)*24*3600即为相差之秒数
 
还有润年,大小月的问题

不过用两个tdatetimepicker相减是个不错的注意
 
接受答案了.
 
后退
顶部