Perl 如何从今天算起一周前的日期

Perl 如何从今天算起一周前的日期,perl,Perl,我想用一种特定的格式计算一周前的日期,从今天算起,并将其放入一个变量中。例如,今天是11月21日。2014年,我想打印出来:上周是2014-11-14 我知道我们可以使用Date::Calc模块,但我不知道如何使用。DateTime版本 日期::计算版本 您可以使用Date::Calc模块减去7天,而不是一周 use Date::Calc qw(Add_Delta_Days); my @date = Add_Delta_Days( 2014, 11, 21, -7 ); print join('

我想用一种特定的格式计算一周前的日期,从今天算起,并将其放入一个变量中。例如,今天是11月21日。2014年,我想打印出来:上周是2014-11-14

我知道我们可以使用
Date::Calc
模块,但我不知道如何使用。

DateTime版本 日期::计算版本 您可以使用Date::Calc模块减去7天,而不是一周

use Date::Calc qw(Add_Delta_Days);
my @date = Add_Delta_Days( 2014, 11, 21, -7 );
print join('-', @date);

OUTPUT
    2014-11-14
检查和控制核心模块

use Time::Piece;
use Time::Seconds;

my $t = localtime() - ONE_WEEK;
print $t->ymd;
输出

2014-11-14

这是非常简单的使用


为什么不从localtime的“mday”字段中减去X天呢?此示例显示从8月底减去60天。我不确定是谁纠正了这个月的错误,但我认为我得到了正确的答案

$ date
Wed Aug 30 14:34:14 DFT 2017
$ perl -MPOSIX -e '@t=localtime time; $t[3] -= 60; print strftime( "%Y/%m/%d", @t), "\n";'
2017/07/01

您使用的是哪种操作系统?Red Hat Enterprise Linux 6.5您可能可以使用软件包管理器安装perl DateTime软件包?我还添加了一个带有Date::Calc模块的解决方案,这可能会有所帮助。但是你可以试着在几天内提及这一点,而不是在一周内。DateTime对于这一点来说可能有些过分了。Time::Piece是Perl的核心。
Time::Piece
从5.10开始就是一个标准的Perl模块。使用这个模块很好,但我还有另一个问题:我们是否只能使用预定义的时间段,比如一周、一天?两天怎么样?我怎样才能让它工作?@NeilWang试试
2*一天
太好了!谢谢@mpapec
    use Date::Manip;
    my $today = ParseDate("today");
    my $weeksago = DateCalc($today,"-7d");
$ date
Wed Aug 30 14:34:14 DFT 2017
$ perl -MPOSIX -e '@t=localtime time; $t[3] -= 60; print strftime( "%Y/%m/%d", @t), "\n";'
2017/07/01