在这种情况下,我可以找到定义,但我不太了解。来自 official documentation :
An Instant is a particular moment in time measured in atomic seconds, with fractions. It is not tied to or aware of any epoch.
我不明白如何在没有纪元的情况下指定特定的时间?没有引用点吗?在两台不同的 Linux 机器上,似乎两个 Instants 都指的是自 POSIX Epoch 以来的秒数。我的猜测是 Instants 确实有一个有效的开始时间,但该开始时间取决于实现/设备。
# machine1
say(now * (1/3600) * (1/24) * (1/365.25)); # years from zero point
46.0748226200715
# machine2
say(now * (1/3600) * (1/24) * (1/365.25)); # years from zero point
46.0748712024946
无论如何,所以我的问题是,可以依赖 Instants 在不同进程之间保持一致还是仅用于“内部”使用?
最佳答案
say (now).WHAT; # «(Instant)»
say (now * 1).WHAT # «(Num)»
任何数字运算符都会将其操作数强制转换为
Num
s。如果您想要正确的字符串表示,请使用 .perl
.say (now).perl # «Instant.from-posix((<1211194481492/833>, 0))»
无论您在哪个平台,
Instant.from-posix
将始终相对于 Unix 时代。见:https://github.com/rakudo/rakudo/blob/nom/src/core/Instant.pm#L15
关于raku - Perl 6 中的所有 Instant 都是可比的还是依赖于机器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35071072/