作为输入的时间,在Perl中打印时间表

时间:2014-11-24 10:12:37

标签: perl time

我想在perl中创建一个脚本,给定一个输入时间(例如07:55)打印一个给定时间-15分钟,-25分钟,+ 1小时30分钟等的时间表。

  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,等等)。有什么建议吗?谢谢。

2 个答案:

答案 0 :(得分: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...

答案 1 :(得分: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