如何在给定日期的perl中查找上一个日期

pau*_*ler 1 perl datetime date

如何在perl中找到给定日期的上一个日期为8月17日.我可以使用下面的代码获取perl中的当前日期.可以帮助我找到给定日期的上一个日期.

Given date as : Aug 17
Required Date as : Aug 16
#Reverting the Date for the respective TimeZone
my $timezone='london';
my ($dt, $Curr_Bus_Date,$Curr_day);
$dt = DateTime->now(time_zone => $timezone);
$Curr_mon=$dt->strftime('%b');
$Curr_date=$dt->strftime('%d');
$Curr_date=~s/^0/ /;
$Curr_dt="$Curr_mon $Curr_date ";
print "The curr date is $Curr_dt \n";
Run Code Online (Sandbox Code Playgroud)

Dav*_*oss 5

DateTime类有一个subtract()方法.它清楚地记录在案.

$ perl -MDateTime -E'say DateTime->now->subtract(days => 1)'
2012-08-16T10:31:25
Run Code Online (Sandbox Code Playgroud)

您也可以使用Perl的标准(从5.10开始)Time :: Piece和Time :: Seconds类.

$ perl -MTime::Piece -MTime::Seconds -E'$t = localtime; $t -= ONE_DAY; say $t'Thu Aug 16 11:37:37 2012
Run Code Online (Sandbox Code Playgroud)

对于这两种方法,您应该记住,从当前日期减去一天并不总能让您到达前一天.