我正在尝试将格式为HH:MM的文本文件中的一些时间戳转换为数字格式(例如,12:30- > 12,5)1,使用Perl正则表达式以便将来更容易处理.
我在这个主题上相当新,所以我正在努力与MM部分,我不知道如何转换它.目前我有这样的事情:
while ( <FILE> ) {
$line = $_;
$line =~ s/([0[0-9]|1[0-9]|2[0-3]):([0-5][0-9])/$2,$1/g;
print $line;
}
Run Code Online (Sandbox Code Playgroud)
1)在我的语言环境中,逗号,用于小数点.想象一下,.所以这意味着12个半,或12.5.
我不会使用正则表达式进行转换.它可以用非常简单的数学来完成.使用搜索模式解析时间,然后通过类似的方式传递它.
sub to_decimal {
my $time = shift;
my ($hours, $minutes) = split /:/, $time;
my $decimal = sprintf '%.02d', ($minutes / 60) * 100 ;
return join ',', $hours, $decimal;
}
Run Code Online (Sandbox Code Playgroud)
如果你在这样的循环中运行它:
for (qw(00 01 05 10 15 20 25 30 35 40 45 50 55 58 59)) {
say "$_ => " . to_decimal("12:$_");
}
Run Code Online (Sandbox Code Playgroud)
你得到:
00 => 12,00
01 => 12,01
05 => 12,08
10 => 12,16
15 => 12,25
20 => 12,33
25 => 12,41
30 => 12,50
35 => 12,58
40 => 12,66
45 => 12,75
50 => 12,83
55 => 12,91
58 => 12,96
59 => 12,98
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |