在这方面需要帮助。
我想创建一个脚本,它将接收具有以下格式的 2 个参数(时间)AA:BB
(AA 从 00 到 200,BB 从 0 到 59)。
它应该将这些添加到时间并给出结果,如果结果超过 24 小时,它会成为 1 天,如果它是一周超过 7 天。
例如,23:03 11:05 将给出 1 天和 10:08,而 35:05 162:01 将给出 1 周、1 天和 5:06。
在这方面需要帮助。
我想创建一个脚本,它将接收具有以下格式的 2 个参数(时间)AA:BB
(AA 从 00 到 200,BB 从 0 到 59)。
它应该将这些添加到时间并给出结果,如果结果超过 24 小时,它会成为 1 天,如果它是一周超过 7 天。
例如,23:03 11:05 将给出 1 天和 10:08,而 35:05 162:01 将给出 1 周、1 天和 5:06。
在开始之前,我想提醒您,并非每一天都是 24 小时。一天的长度可以是 22、23、24、25 或 26 小时。这意味着您想要做的事情会固有地将错误添加到您的数据中。
我通常会是第一个指示您使用模块的人,因为一个好的日期/时间模块旨在防止您完全按照您的要求进行操作。这意味着从头开始解决问题比使用模块更容易。事实上,使用我通常使用的模块 DateTime 甚至不可能做你想做的事。
my ($hours1, $minutes1) = split /:/, $arg1;
my ($hours2, $minutes2) = split /:/, $arg2;
my $hours = $hours1 + $hours2;
my $minutes = $minutes1 + $minutes2;
$hours += ($minutes - ($minutes % 60)) / 60; $minutes %= 60;
my $days = ($hours - ($hours % 24)) / 24; $hours %= 24;
my $weeks = ($days - ($days % 7)) / 7; $days %= 7;
看来您需要使用这两个:DateTime和DateTime::Duration。
第一个可以表示日期,第二个可以表示要添加的时间量。然后,查看 中的add_duration
方法DateTime
。