Perl脚本时间计算器

时间:2013-03-26 01:54:54

标签: perl

需要帮助。

我想创建一个脚本,它将接收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 个答案:

答案 0 :(得分:2)

在我们开始之前,我想提醒您,并非每天都是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;

答案 1 :(得分:1)

您似乎需要使用这两个:DateTimeDateTime::Duration

第一个可以代表 date ,第二个代表 time 你想要添加的数量。然后,查看add_duration中的DateTime方法。