Perl DateTime发送多个参数?

Perl DateTime发送多个参数?,perl,Perl,这是我的密码: #!/usr/bin/env perl use strict; use warnings; use Data::Dumper; use DateTime; package Weeks; sub new { my $class = shift; my $self = { }; bless $self, $class; return $self; } sub getWeek { my $self = shift; my $d

这是我的密码:

#!/usr/bin/env perl

use strict;
use warnings;

use Data::Dumper;
use DateTime;

package Weeks;

sub new {
    my $class = shift;
    my $self = {  };
    bless $self, $class;
    return $self;
}

sub getWeek {
    my $self = shift;
    my $dummy = shift;
    my $year = shift;
    my $week = shift;
    print "getWeek($dummy, $year, $week)\n";
}

package main;

my $dt = DateTime->new(year => 2015, month => 6, day => 1);
my $weeks = Weeks->new();

print "weeks is $weeks\n";
$weeks->getWeek(2015, 5, 3);

print "Calling getWeek on $dt for " . $dt->year . " week " . $dt->week . "\n";
$weeks->getWeek($dt->year, $dt->week, 3);
当我运行此程序时,我得到:

getWeek(2015, 5, 3)
Calling getWeek on 2015-06-01T00:00:00 for 2015 week 23
getWeek(2015, 2015, 23)
为什么在第二种情况下会发送两次年份?

$dt->week()
返回两个值

$dt->week()

返回有关包含此datetime对象的日历周的信息。此方法返回的值也可通过week_year和week_number方法分别获得

ISO将一年的第一周定义为包含1月4日的一周,这相当于说这是与新年重叠至少四天的第一周

通常,周年与对象所在的年份相同,但日历年开始时的日期通常在前一年的最后一周结束,同样,一年的最后几天也可能放在下一年的第一周

您可以使用
($dt->week)[1]
来获取周数,但是如果没有第一个值,第二个值将毫无用处。我认为你应该使用以下方法:

$weeks->getWeek($dt->week, 3);
$dt->week()
返回两个值

$dt->week()

返回有关包含此datetime对象的日历周的信息。此方法返回的值也可通过week_year和week_number方法分别获得

ISO将一年的第一周定义为包含1月4日的一周,这相当于说这是与新年重叠至少四天的第一周

通常,周年与对象所在的年份相同,但日历年开始时的日期通常在前一年的最后一周结束,同样,一年的最后几天也可能放在下一年的第一周

您可以使用
($dt->week)[1]
来获取周数,但是如果没有第一个值,第二个值将毫无用处。我认为你应该使用以下方法:

$weeks->getWeek($dt->week, 3);

显示args的适当方式:
警告(转储程序(\@))
(在任何
班次之前
(除非您想排除
$self
)。显示args的适当方式:
警告(转储程序(\@))
(在任何
班次之前
(除非您想排除
$self
)。