Delphi 从TStopWatch获取开始时间或结束时间

Delphi 从TStopWatch获取开始时间或结束时间,delphi,datetime,delphi-2010,Delphi,Datetime,Delphi 2010,在Delphi 2010中,是否可以从TStopWatch获取(TDateTime)开始时间(或结束时间) 评论中的澄清:我不需要解释多次停止/重新启动,只需要知道秒表启动的日期和时间。没有返回秒表启动时间的属性。所以我想你需要做一点算术来解决这个问题 将ElapsedTicks除以Frequency以获得秒表启动后的秒数 从现在的时间中减去该值,即可获得秒表启动的时间 代码可能如下所示: uses Diagnostics, DateUtils; function GetStopwat

在Delphi 2010中,是否可以从TStopWatch获取(TDateTime)开始时间(或结束时间)


评论中的澄清:我不需要解释多次停止/重新启动,只需要知道秒表启动的日期和时间。

没有返回秒表启动时间的属性。所以我想你需要做一点算术来解决这个问题

  • ElapsedTicks
    除以
    Frequency
    以获得秒表启动后的秒数
  • 从现在的时间中减去该值,即可获得秒表启动的时间
代码可能如下所示:

uses
  Diagnostics, DateUtils;

function GetStopwatchStart(const Stopwatch: TStopwatch): TDateTime;
var
  ElapsedSeconds: Double;
begin
  ElapsedSeconds := Stopwatch.ElapsedTicks / Stopwatch.Frequency;
  Result := IncMillisecond(Now, -Round(ElapsedSeconds*1000));
end;

请注意,这假设秒表正在运行,并且从未暂停过。

您应该将
delphi
标记添加到与delphi相关的问题中。(4k用户也应该知道这一点)是什么让你远离阅读和回答问题很简单,不,你不能你需要更清楚地定义你的术语。什么时候结束?调用
Stop
方法时?还是现在的时间?秒表可以运行或停止。秒表可以启动多次。你想什么时候开始?@SirRufo,你为什么不能?停止后是结束时间。减去经过的毫秒就是开始时间…TStopWatch有足够的文档来回答您的问题。我只需要声明部分来回答它。starttime没有公共财产,David解释了原因。如果你想拥有一个秒表,只需复制粘贴源代码,并用更多的公共属性构建你自己的秒表记录。这将只是一小部分要实现的代码。使用“now”简单地修改stopwatch start和stop方法来存储当前的TDateTime不是比进行所有那些复杂的数学运算要容易得多吗?比如说,如果您正在编写库代码,并且无法修改rtl代码,则不会。或者确实有任何其他有效理由不修改rtl代码。TStopWatch在unit System.Diagnostics中声明。事实上,它是那个单位里唯一的东西。因此,如果您害怕对该单元进行更改,请复制该单元,进行必要的更改,并将TStopWatch的名称更改为TModifiedStopWatch。这样,您可以在不破坏原始代码的情况下进行所有必要的更改。@如果您愿意,silver可以随意这样做。这个问题是关于TStopwatch的。是的,我知道最初的问题是关于TStopwatch本身的。这就是为什么我没有将此作为答案发布的原因。