0

在 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然后下次需要减去它。

请让我知道是否有任何可用的功能。

4

1 回答 1

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 之一来获得你需要的东西:)

这里有一些链接给你:

于 2013-08-01T06:01:59.897 回答