Ada.Real_Time.Clock为不同版本的GNATPro Ada编译器返回不同的值

Ada.Real_Time.Clock为不同版本的GNATPro Ada编译器返回不同的值,ada,Ada,我正在使用2台虚拟机(VMWare);一个虚拟机有GNATPro Ada编译器7.3.2,Ada.Real_Time.Clock返回自该纪元开始以来的秒数。另一个VM具有GNATPro 19.0,Ada.Real_Time.Clock返回自VM启动以来的秒数 我们在两个虚拟机上都使用Ada 95 我已检查两个虚拟机上的时间设置是否相同 为了检查这是否是编译器的差异,我在GNATPro 19.0上编译了一个小测试程序,并在使用旧编译器的虚拟机上运行它。我得到的结果与使用较新版本的编译器在VM上得到

我正在使用2台虚拟机(VMWare);一个虚拟机有GNATPro Ada编译器7.3.2,Ada.Real_Time.Clock返回自该纪元开始以来的秒数。另一个VM具有GNATPro 19.0,Ada.Real_Time.Clock返回自VM启动以来的秒数

我们在两个虚拟机上都使用Ada 95

我已检查两个虚拟机上的时间设置是否相同

为了检查这是否是编译器的差异,我在GNATPro 19.0上编译了一个小测试程序,并在使用旧编译器的虚拟机上运行它。我得到的结果与使用较新版本的编译器在VM上得到的结果相同。然后,我用旧的编译器编译了测试程序,并用新的编译器在VM上运行,得到了与旧编译器在VM上相同的结果

我的问题是,有人知道我如何让Ada.Real_Time.Clock返回GNATPro 19.0从纪元开始的秒数吗

下面是测试程序

with Test_Io;
with Ada.Real_Time;
procedure Time_Test is

   Current_Real_Time : Ada.Real_Time.Time;
   Time_Span : Ada.Real_Time.Time_Span;
   Seconds_Count : Ada.Real_Time.Seconds_Count;


begin

    Current_Real_Time := Ada.Real_Time.Clock;

    Ada.Real_Time.Split (
             T => Current_Real_Time,
             Sc => Seconds_Count,
             Ts => Time_Span);
   Test_Io.Put_Line("TRACE: Seconds_Count = " & Seconds_Count'Img);

end Time_Test;
报告说:

“时间值I表示以E+I*时间单位开始并受E+(I+1)限制的半开放实时间隔*时间单位,其中时间单位是一个实现定义的实数,E是一个未指定的原点,即历元,对于时间类型的所有值都是相同的。语言没有指定时间值是否与任何标准时间参考同步。[例如,E可以对应于系统初始化的时间,也可以对应于某个时间标准的历元。]”

因此,实现可以自由选择它想要的任何时代

当你说“时代”的时候,我想你脑子里一定有一个特定的值?UNIX时间? 你最好选择Ada.Calendar.Time作为挂钟行为