gpt4 book ai didi

perl - 解析时间戳和计算差异

转载 作者:行者123 更新时间:2023-12-05 01:49:46 25 4
gpt4 key购买 nike

所以我正在解析一个日志文件并查找某些时间戳,然后减去它们以获得耗时。

所以我尝试了一个简单的代码来查看我是否可以使用 Time::Piece 但没有成功。我的代码如下:

use Time::Piece;

my ($S, $E);

GetOptions (
"S=s" => \$S,
"E=s" => \$E,
);

my $start = $S;
my $end = $E;
my %build_time;

my $start_time;
my $end_time;
if(my ($start_time) = $start =~ /\[gg\s+(\d+\:\d+\:\d+)\s+I\]/){
print"Build_Time: start at $start_time\n";
}
#--------------------
# End time from dj
if(my ($end_time) = $end =~ /\[gg\s+(\d+\:\d+\:\d+)\s+I\]/){
print "Build_Time: end at $end_time\n";
}

my $difference = Time::Piece->strptime($end_time,'%H:%M:%S') - Time::Piece->strptime($start_time,'%H:%M:%S');

print " difference: $difference \n";

执行:perl time.pl -S "[gg 8:11:03 I]: Copyright"-E "[gg 8:19:03 I]: BT_DEPTH=99 "

Build_Time:从 8:11:03 开始Build_Time:结束于 8:19:03差异:0

此外,24 小时格式的时间是多少,日志包含夜间运行(因此差异为负)?

最佳答案

您的代码存在作用域问题:if 语句中的 $start_time$end_time 掩盖了外部变量。如果时差最大为 23:59:59,您可以使用模运算来修复因跨越日期边界而导致的负秒输出:

时间.pl:

use strict;
use warnings;
use Getopt::Long;

use Time::Piece;
my ($S, $E);

GetOptions (
"S=s" => \$S,
"E=s" => \$E,
);

my $start = $S;
my $end = $E;
my %build_time;

my $start_time;
my $end_time;
if( ($start_time) = $start =~ /\[gg\s+(\d+\:\d+\:\d+)\s+I\]/){
print"Build_Time: start at $start_time\n";
}
#--------------------
# End time from dj
if( ($end_time) = $end =~ /\[gg\s+(\d+\:\d+\:\d+)\s+I\]/){
print "Build_Time: end at $end_time\n";
}

my $tp_st = Time::Piece->strptime($start_time,'%H:%M:%S');
my $tp_e = Time::Piece->strptime($end_time,'%H:%M:%S');

my $difference = $tp_e -$tp_st;
$difference %= 60*60*24; # 1 day
print " difference: $difference \n";

测试:

perl time.pl -S "[gg 8:19:04 I]: Copyright" -E "[gg 8:19:14 I]: BT_DEPTH=99 "
Build_Time: start at 8:19:04
Build_Time: end at 8:19:14
difference: 10


perl time.pl -S "[gg 8:19:04 I]: Copyright" -E "[gg 8:19:03 I]: BT_DEPTH=99 "
Build_Time: start at 8:19:04
Build_Time: end at 8:19:03
difference: 86399

关于perl - 解析时间戳和计算差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73696901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com