用perl DateTime减去两个日期

用perl DateTime减去两个日期,perl,datetime,Perl,Datetime,我试图从对方身上减去两个日期,但不幸的是没有成功。也许有人能帮我一下。我的第一次尝试看起来像: #!/usr/bin/perl -w #use strict; use warnings; use DateTime; $today = DateTime->now( time_zone => 'Europe/Berlin' ); $today = $today->ymd; my $year = '2011'; my $month = '03'; my $day = '22'; my $dt1

我试图从对方身上减去两个日期,但不幸的是没有成功。也许有人能帮我一下。我的第一次尝试看起来像:


#!/usr/bin/perl -w
#use strict;
use warnings;
use DateTime;

$today = DateTime->now( time_zone => 'Europe/Berlin' );
$today = $today->ymd;

my $year = '2011';
my $month = '03';
my $day = '22';

my $dt1 = DateTime-> new (
                     year => $year,
                     month => $month,
                     day   => $day,
                     time_zone =>'Europe/Berlin'
                     );

my $mydate = $dt1->ymd;

my $sub = $today->subtract_datetime($mydate);

print "subtraction: $sub \n";

提前感谢。

这里似乎有一个问题:

$today=$today->ymd


它写在对象上,但您希望稍后使用它的方法。

这里似乎有一个问题:

$today=$today->ymd


它写在对象上,但您希望稍后使用它的方法。

问题在于您正在调用ymd方法,该方法返回的是字符串,而不是DateTime对象。因此,正如wk告诉您的,在调用ymd方法之前,应该使用subtract_datetime方法。在您的代码中,您可能会收到“Can not call method”subtract_datetime“在…处没有包或对象引用”消息

问题在于您调用的是ymd method,它返回的是字符串,而不是datetime对象。因此,正如wk告诉您的,在调用ymd方法之前,应该使用subtract_datetime方法。在您的代码中,您可能会得到“Can not call method”subtract_datetime“在没有包或对象引用的情况下…”消息

->ymd
返回一个字符串,而不是datetime对象

$today = DateTime->now( time_zone => 'Europe/Berlin' );
$today = $today->ymd;
应该是

$today = DateTime->now( time_zone => 'Europe/Berlin' );
$today->truncate( to => 'day' );
或者只是

$today = DateTime->today( time_zone => 'Europe/Berlin' );

->ymd
返回一个字符串,而不是DateTime对象

$today = DateTime->now( time_zone => 'Europe/Berlin' );
$today = $today->ymd;
应该是

$today = DateTime->now( time_zone => 'Europe/Berlin' );
$today->truncate( to => 'day' );
或者只是

$today = DateTime->today( time_zone => 'Europe/Berlin' );

大家好,非常感谢您的回复。我删除了ymd,现在如果我打印$sub->daysHi wk,它可以正常工作,非常感谢您的回复。我删除了ymd,现在如果我打印$sub->days,它可以正常工作