将绝对时间转换为相对时间

时间:2013-08-01 05:42:37

标签: perl

在perl中,我们可以直接得到以下格式给出的时间差异吗?

要求是我必须将绝对时间转换为相对时间:

输入:

2013/06/19 05:16:51:209  INFO
2013/06/19 05:16:54:365  INFO
2013/06/19 05:16:54:365  INFO

预期产出:

000000.000000 INFO 
000003.156000 INFO
000003.156000 INFO

所以我必须将05:16:51:209作为参考时间并将其设为0然后需要在下次减去它。

如果有相同的功能,请告诉我。

1 个答案:

答案 0 :(得分:0)

这是一个非常复杂的问题(我喜欢这个:D)。但我会给你一个解决方案(它没有完成,但你的大部分问题应该被清除):

use DateTime::Format::Strptime;
my $parser = DateTime::Format::Strptime->new(
  pattern  => '%y/%m/%d %H:%M:%S:%N',
  on_error => 'croak',
);

my @dates = (
  '2013/06/19 05:16:51:209 INFO',
  '2013/06/19 05:16:54:365 INFO',
  '2013/06/19 05:16:54:365 INFO',
);

my %dates;
$dates{$_} = $parser->parse_datetime( $_ ) foreach @dates;

我使用[DateTime::Format::Strptime]来解析Datetime并获取DateTime对象。然后你只需要调用DateTime模块的delta-Methods之一来获得你需要的东西:)

以下是一些链接: