为什么 Perl 的 DateTime 在尝试使用 'hour' 选项添加 () time 时会抛出错误?



我试图在当前时间上增加一个小时,但遇到了一个错误。

我的代码片段是

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

我该如何让它发挥作用?

查看DateTime add方法文档:

$dt->添加(日期时间::持续时间->新参数)

这个方法是围绕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 );

相反!

通过将呼叫更改为

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

最新更新