如何在Perl中找到比给定日期提前三天的日期?

biz*_*nez 5 perl date

如何找到比Perl中给定日期提前3天的日期,格式为YYYY-MM-DD?

Eth*_*her 10

Date::Calc 是这里的冠军模块:

use strict;
use warnings;
use Date::Calc qw(Add_Delta_YMD);

my $startDate = '2000-01-01';
my ($startYear, $startMonth, $startDay) = $startDate =~ m/(\d{4}-(\d{2})-\d{2})/;

# 1 year, 2 months, 3 days, after startDate
my $endDate = join('-', Add_Delta_YMD($startYear, $startMonth, $startDay, 1, 2, 3));
Run Code Online (Sandbox Code Playgroud)

该模块具有大量的时间转换例程,特别是那些处理增量的例程. DateTime并且Date::Manip也值得一试.


Ala*_*avi 9

Date :: Calc可用于此类计算:

#!/usr/bin/perl

use strict;
use warnings;
use Date::Calc qw(Add_Delta_Days);

my ( $yyyy, $mm, $dd ) = ( 2009, 9, 2 );
my @date = Add_Delta_Days( $yyyy, $mm, $dd, -3 );
print join( '-', @date );
Run Code Online (Sandbox Code Playgroud)


dra*_*tun 6

DateTime是处理现代Perl中日期的规范方法:

use DateTime;

my ($year, $month, $day) = split '-', '2009-09-01';

my $date = DateTime->new( year => $year, month => $month, day => $day );

$date->subtract( days => 3 );

# $date is now three days earlier (2009-08-29T00:00:00)
Run Code Online (Sandbox Code Playgroud)