perl - 如何修改 Perl DateTime 对象?

标签 perl datetime date

在我的脚本中,我需要创建一个这样的循环:

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/

相关文章:

javascript - 直接访问 Amazon S3 被拒绝

perl - 关于相等运算符的警告

python - 在 python 中组合列以获得新的日期格式

javascript - jQuery UI 日期选择器 : add 6 months to another datepicker

java - 如何找到存储在同一行mysql的2列中的日期差异

xml - 如何访问由 XML::Parser 创建的解析树?

mysql - 在单个 MySQL 查询中更新多个列是否有限制?

php - PHP DateInterval 是否与 DateTime 具有可比性?

Python 搜索列

ios - 如何在 iOS 中以编程方式设置日期和时间