在我的脚本中,我需要创建一个这样的循环:
use DateTime;
for $j(0..3){
my ($date) = DateTime->now->ymd;
my ($k) = 0;
while($k <= $j){
$date = ($date->subtract( days => 7));
$k++;
}
print "$date\n";
}
应该获取当前日期,然后是一周前,等等。遗憾的是,在获取正确的当前日期后,它不起作用,我不知道出了什么问题。
Error message is "Can't call method "subtract" without a package or object reference [...]",
但我不知道如何解决这个问题。
如果可能,我想继续只使用 DateTime 或将其替换为另一个模块(可能不超过一个)。
最佳答案
Datetime->now->ymd
是一个标量(看起来是字符串),而不是对象/引用。您不能对其调用 subtract
,因为它不存在。当您分配给 $date
时,您可能只想尝试省略 ymd
部分:
my ($date) = DateTime->now;
...
for(0..$j) {
$date = ($date->subtract( days => 7));
}
...
如果要访问 ymd
值,请在创建对象后执行:
my ($date) = DateTime->now;
...
my ($ymd) = $date->ymd;
参见 CPAN更多页面。
关于perl - 如何修改 Perl DateTime 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3908388/