2014-11-24 87 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