1

如何在 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";
4

3 回答 3

5

DateTime 类有一个subtract()方法。它有明确的记录

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

您也可以使用 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

使用这两种方法,您应该记住,从当前日期减去一天并不总是能让您回到前一天。

于 2012-08-17T10:33:02.463 回答
0

您可以使用以下Add_Delta_Days方法:

use Date::Calc qw(Add_Delta_Days);
($year, $month, $day) = Add_Delta_Days(2012,8,17,-1);

问候,

于 2012-08-17T10:23:00.950 回答
0

您是否考虑过Date::Manip及其日期计算工具

我真的会检查 CPAN 以获得这些常用的功能。那里有很多成熟的强大模块。

于 2012-08-17T10:26:17.547 回答