给定时间戳的时间差

时间:2013-08-30 10:28:22

标签: perl

我想在窗口上计算时间戳下面的时间差异。

tt1 = 2013/08/16 23:59:59:785

tt2 = 2013/08/16 23:59:59:753

和outut应该是:000826.288000

我尝试过以下代码,但输出为16799588.000000。

但输出应该像000826.288000。请帮我弄清楚时间戳000826.288000。

use DateTime::Format::Strptime;
my $dp = DateTime::Format::Strptime->new(
  pattern => '%Y/%m/%d %H:%M:%S:%3N'
);

# Create two DateTime objects
my $tt1 = $dp->parse_datetime('2013/08/16 23:59:59:753');
my $tt2 = $dp->parse_datetime('2013/08/16 23:59:59:785');

# The difference is a DateTime::Duration object
my $diff1 = $tt2 - $tt1;
#print " t1 and t2 are : $diff $tt1 and $tt2 \n";

my $diff = sprintf "%013.6f", $tt2 - $tt1;

1 个答案:

答案 0 :(得分:3)

您的时间戳之间的差异是32毫秒,无论您如何格式化它们,您都不会得到000826.288000。假设你有一个合适的持续时间结果:

use DateTime::Duration qw();
use DateTime::Format::Duration qw();

print DateTime::Format::Duration
    ->new(pattern => '%06S.%06N')
    ->format_duration(
        DateTime::Duration->new(seconds => 826, nanoseconds => 288000000)
    );
__END__
000826.288000