如何在perl中实现addate实用程序?

时间:2012-09-08 20:00:52

标签: perl date strftime

我没有使用perl的经验,我需要创建一个在添加偏移后打印日期的实用程序,格式字符串是strftime格式字符串。

  

格式:./ adddate number_of_days [format_string]

     

示例:./ adddate -1“%a,%b%d”#打印昨天的日期

2 个答案:

答案 0 :(得分:3)

经过一些研究后,我能够编写代码:

#!/usr/bin/perl 
use DateTime;
$offset = $ARGV[0];
$format = $ARGV[1];
$dt = DateTime->now();
$dt->add( days => $offset );
print $dt->strftime($format)."\n";

答案 1 :(得分:0)

要添加天数,只需以分解形式(由tm_mday返回)递增时间的localtime字段。然后,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 );

所有核心模块。