2013-03-26 83 views
-1

需要帮助。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。

+1

您似乎忘记提问了。你有什么问题? – ikegami 2013-03-26 04:51:55

+1

注意:并非所有的日子都有24小时。 – ikegami 2013-03-26 04:53:06

回答

1

看来你需要使用这两个:DateTimeDateTime::Duration

有了第一个,你可以代表日期,并与第二时间量要增加。然后,查看DateTime中的add_duration方法。

+0

'add()'方法为你创建一个持续时间对象。 – jordanm 2013-03-26 02:35:17

+1

你会想要使用'time_zone =>'floating'' – ikegami 2013-03-26 04:52:30

+1

你如何用DateTime和/或DateTime :: Duration来做到这一点?我不认为这是可能的,即使是“浮动”。 – ikegami 2013-03-26 10:10:49

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;