2

我正在尝试在当前时间上增加一个小时,但出现错误。

我的代码片段是

use DateTime;
my $now=DateTime->now(
     time_zone=> 'America/Los_Angeles');
$now->add( hour=>1 );

我得到的错误是:

The following parameter was passed in the call to DateTime::Duration::new but was not listed in the validation options: day at c:\strawberry....
DateTime::Duration::new(undef, 'day', 1) called at c:\strawberry.... 
DateTime::add('DateTime=HASH(0x2e49ae0)', 'day', 1) called at tester.pl line 6

我怎样才能让它工作?

4

2 回答 2

4

查看方法文档:DateTime add

$dt->add(DateTime::Duration->新参数)

此方法是 add_duration() 方法的语法糖。它只是使用给定的参数创建一个新的 DateTime::Duration 对象,然后调用 add_duration() 方法。

哦,所以这就像调用 add_duration。方法说明了什么DateTime->add_duration

$dt->add_duration($duration_object)

此方法将 DateTime::Duration 添加到当前日期时间。有关更多详细信息,请参阅 DateTime::Duration 文档。

啊,我们需要 DateTime::Duration 的参数。那些是什么?

http://metacpan.org/pod/DateTime::Duration

use DateTime::Duration;

$dur = DateTime::Duration->new(
   years       => 3,
   months      => 5,
   weeks       => 1,
   days        => 1,
   hours       => 6,
   minutes     => 15,
   seconds     => 45,
   nanoseconds => 12000
);

哦,hourhours。利用

$now->add( hours => 1 );

反而!

于 2013-02-01T21:38:44.550 回答
1

通过将您的呼叫更改为

$now->add( hours => 1 );
于 2013-02-01T21:35:15.580 回答