【问题标题】:18 digit julian timestamp in perlperl 中的 18 位朱利安时间戳
【发布时间】:2015-05-26 21:48:18
【问题描述】:

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

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

【问题讨论】:

  • 210866803200000000 是 UNIX 纪元添加更多上下文的 Julian 时间戳。
  • 您将一个整数乘以 1000000 并想知道为什么您在正确的 6 个位置都得到了全零?您是否尝试过 use Time::HiRes 并避免炮轰?
  • 是的,零点很明显,这就是我提到的,“我觉得不好看”
  • 想知道为什么要运行一个单独的实例 Perl 来获取 $t,而不是仅仅运行 my $t = time

标签: perl timestamp julian-date


【解决方案1】:

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

use Time::HiRes qw( );

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-02
      • 1970-01-01
      • 2014-12-30
      • 2017-10-27
      • 2021-01-21
      • 1970-01-01
      • 2013-07-26
      • 1970-01-01
      相关资源
      最近更新 更多