【问题标题】:Function Now in Pascal现在在 Pascal 中的函数
【发布时间】:2021-05-23 09:10:53
【问题描述】:

我正在尝试查找有关返回时间的函数Now() 的扩展描述。 FreePascal 官方网站上有这样的描述:

现在返回当前日期和时间。相当于日期+时间。

我正在寻找在 FreePascal 中从 1970 年 1 月 1 日 00:00:00 开始测量的时间。

你能帮帮我吗?

【问题讨论】:

  • TDateTime 的组成部分是自 1899 年 12 月 30 日以来的天数。如果您想要 unix 时间,请参阅DateTimeToUnix

标签: pascal freepascal


【解决方案1】:

Pascal 对“时间的开始”有一个非常不同的想法,我认为它在数学上更简单,而且更有意义。无论如何,如果我正确理解您的问题,我认为您正在寻找类似 Unix Timestamp 值的东西?

这就是你在 FreePascal 中得到它的方式:

uses sysutils, dateutils;

function GetUnixNow() : Int64;
begin
  Result := DateTimeToUnix(Now());
end;

调用此函数将返回一个 64 位整数,相当于 C11 中的(unsigned long)time(NULL);

【讨论】:

  • Freepascal 和 Delphi 的 TDateTime 格式是 Windows OLE 标准,因此并不像人们想象的那么奇特。
  • Delphi 和 Lazarus/freepascal 使用寄存器,而不是 stdcall。调用约定的大多数原因都非常具有历史意义(并且通常还取决于英特尔当时所倡导的理想状态)。对此作出血统决定是困难的。由于可变参数在 C 中的起源方式,Cdecl 是一个例外。
  • 感谢@MarcovandeVoort 的更正。我已删除我之前不正确的评论,所以这不会让人们感到困惑,尤其是如果他们也没有看到您的评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
相关资源
最近更新 更多