加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl6 – 在Perl 6中,所有Instants都是可比较的还是机器相关的?

发布时间:2020-12-15 23:21:04 所属栏目:大数据 来源:网络整理
导读:这是我可以找到定义的情况,但我不太了解它.从 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. 我不明白如何在没有时代的情况下指定特定时刻?
这是我可以找到定义的情况,但我不太了解它.从 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在不同进程之间保持一致,还是只用于“内部”使用?

解决方法

当前在特定计算机上的所有Instant对象都是可比较的,来自不同计算机的Instants可能不是.

出于实用目的,在POSIX机器上,它目前基于自1970年1月1日以来的秒数,根据International?Atomic?Time (TAI),现在是Coordinated?Universal?Time (UTC)之前的36 seconds.
(即使您知道您的代码只能在POSIX机器上运行,也不应该依赖它)

在另一个系统上,它可能更有意义,它基于打开机器后的时间量.
因此,重新启动后,重启之前的任何Instants将无法与之后的任何Instants进行比较.

如果要比较来自不同计算机的Instants,或将它们存储起来供以后使用,请将其转换为标准化值.

您可以使用几种内置转换器

# runtime constant-like term
my init = INIT now;

say init.to-posix.perl;
# (1454172565.36938,Bool::False)

say init.DateTime.Str;     # now.DateTime =~= DateTime.now
# 2016-01-30T16:49:25.369380Z

say init.Date.Str;         # now.Date =~= Date.today
# 2016-01-30

say init.DateTime.yyyy-mm-dd eq init.Date.Str;
# True

如果你需要比上面显示的更多,我建议你只使用DateTime对象,因为它有各种有用的方法.

my $now = DateTime.now;
say $now.Str;
# 2016-01-30T11:29:14.928520-06:00

say $now.truncated-to('day').utc.Str;
# 2016-01-30T06:00:00Z
#             ^

say $now.utc.truncated-to('day').Str;
# 2016-01-30T00:00:00Z
#             ^

Date.today和DateTime.now会考虑您当地的时区信息,而now.Date和now.DateTime则不能.

如果你真的只想处理POSIX时间,你可以使用与now.to-posix [0] .Int大致相同的时间.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读