perl 中的 18 位朱利安时间戳

18 digit julian timestamp in perl

我需要在我的 perl 脚本中获取 18 位 Julian 时间戳。任何人都可以帮助我吗?然而,我已经编写了一个子程序来实现这一点,但它对我来说并不好看,因为它总是给我一个以 6 个零结尾的数字。请帮助获得正确的 18 位 J 时间戳。

sub GetJulianTimestamp()
{
  my $t = `perl -e 'print time, "\n"'`;
  return (($t * 1000000 ) + 210866803200000000);
}

根据评论,您似乎在询问如何获取自 unix 纪元以来的微秒数。

use Time::HiRes qw( );

my $microsec_time = int( Time::HiRes::time() * 1_000_000 );
return 210866803200000000 + $microsec_time;

我同意ikegami的回答,只是需要更改添加到unix epoch的数量。值 210866803200000000 对应于公元前 4714 年 11 月 24 日,00:00 通用时间,格里高利历。但儒略历的纪元是在中午,而不是午夜。所以要添加的金额应该是210,866,760,000,000,000。当然,已经转换为微秒的 Julian 日期没有正式名称,因此任何使用此类数字的人都必须向接收数据的任何人提供解释。