我想在窗口上计算时间戳下面的时间差异。
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;
答案 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