我没有使用 perl 的经验,我需要创建一个实用程序,它会在添加偏移量后打印日期,格式字符串是 strftime 格式字符串。
格式:./adddate number_of_days [format_string]
示例:./adddate -1 "%a, %b %d" # 打印昨天的日期
经过一番研究,我能够编写代码:
#!/usr/bin/perl
use DateTime;
$offset = $ARGV[0];
$format = $ARGV[1];
$dt = DateTime->now();
$dt->add( days => $offset );
print $dt->strftime($format)."\n";
要添加天数,只需tm_mday
以细分形式增加时间字段(由 返回localtime
)。A mktime
-localtime
往返将重新规范化它,考虑月或年的翻转。
use strict;
use feature qw( say );
use POSIX qw( mktime strftime );
my $offset = $ARGV[0];
my $format = $ARGV[1];
my @t = localtime;
$t[3] += $offset; # tm_mday field
say strftime( $format, localtime mktime @t );
所有核心模块。