2

現在の時刻に1時間を追加しようとしていますが、エラーが発生します。

私のコードスニペットは

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-> new parameters)

このメソッドは、add_duration()メソッドの周りのシンタックスシュガーです。指定されたパラメーターを使用して新しいDateTime::Dutyオブジェクトを作成し、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 に答える