2013-03-26 81 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;