使用perl DateTime减去两个日期

时间:2011-03-23 09:53:03

标签: 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 = 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";

提前致谢。

3 个答案:

答案 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' );

DateTime

答案 2 :(得分:0)

问题是你正在调用ymd方法,它返回一个字符串,而不是DateTime对象。因此,正如wk告诉你的那样,你应该在调用ymd方法之前使用subtract_datetime方法。在你的代码中,你可能会得到“无法调用方法”subtract_datetime“没有包或对象引用...”消息