我试图相互减去两个日期,但遗憾的是没有成功。也许有人可以帮我一臂之力。我的第一次尝试看起来像:
#!/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";
提前致谢。
答案 0 :(得分:3)
似乎有一个问题:
$today = $today->ymd;
它写入对象,但您想稍后使用它的方法。
答案 1 :(得分:1)
->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' );
答案 2 :(得分:0)
问题是你正在调用ymd方法,它返回一个字符串,而不是DateTime对象。因此,正如wk告诉你的那样,你应该在调用ymd方法之前使用subtract_datetime方法。在你的代码中,你可能会得到“无法调用方法”subtract_datetime“没有包或对象引用...”消息