add(days => $d // 0, hours => $h // 0,-6ren">
gpt4 book ai didi

"plus days:hours:minutes"的perl时间解析和差值计算

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

我有一个带有时差的字符串,例如:

12:03:22  <- where
^ ^ ^
| | +minutes
| +hours
+days

必填的只是分钟,小时和天可以省略,但是这里可以是e.g. 120:30,即 120 小时 30 分钟。

需要计算NOW + difference的日期和时间,例如:

when now is "May 20, 13:50" and
the string is "1:1:5"
want get as result: "2012 05 21 14 55" (May 21, 14:55)

我知道 DateTime,但解析输入字符串的简单方法是什么?我敢肯定比这里更好的方法是:

use _usual_things_;
my ....
if($str =~ m/(.*):(.*):(.*)/) {
$d = $1; $h = $2; $m = $3;
}
elsif( $str =~ m/(.*):(.*)/ ) {
$h = $1; $m = $2;
} elsif ($str =~ m/\d+/ ) {
$m = $1;
}
else {
say "error";
}

以及如何将已解析的天、小时、分钟添加到当前日期?

最佳答案

如何使用 reverse 来避免检查格式?

my ($m, $h, $d) = reverse split /:/, $str;

要将其添加到当前日期,只需使用 DateTime:

print DateTime->now->add(days    => $d // 0,
hours => $h // 0,
minutes => $m);

关于 "plus days:hours:minutes"的perl时间解析和差值计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10684875/

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