2014-11-24 74 views
0

我想在perl中創建一個腳本,給定輸入時間(例如07:55)打印一個時間表,給定時間-15分鐘,-25分鐘,+ 1小時30分鐘等輸入時間,Perl打印時間表

Input: 07:55 (or 0755, or separate hours and minutes) 
    Expected output: Thing 1: 07:40 
        Thing 2: 07:30 
        Thing 3: 08:25 

,但我有麻煩尋找可能的功能或簡單的方法來做到這一點(我只想到分鐘,案值+增加if的之和爲大於59等) 。任何建議?謝謝。

+1

在看一看:https://metacpan.org/pod/distribution/Date- Calc/lib/Date/Calc.pod – Toto 2014-11-24 10:32:03

回答

2

嘗試使用DateTime模塊。
例如:

use DateTime; 

my $h = 7; 
my $m = 55; 

my $dt = DateTime->new(
    year => 2014, 
    month => 11, 
    day => 24, 
    hour => $h, 
    minute => $m, 
); 

printf "%02d:%02d\n", $dt->hour, $dt->minute; # prints "07:55" 

$dt->subtract(minutes => 15); 
printf "%02d:%02d\n", $dt->hour, $dt->minute; # prints "07:40" 

# and so on... 
+0

啊,太好了!我使用DateTime只是爲了打印當前時間,而我不知道那些額外的功能。謝謝! – PGreen 2014-11-24 10:44:13

2

您也可以使用Time::Piece如果你不想安裝外部模塊。

這裏是一個一行向你展示它是如何工作的:

perl -e 'use Time::Piece; $ z= Time::Piece->strptime("11:30", "%H:%M"); print $z-120;' 

將返回

Thu Jan 1 11:28:00