给定当前日期,我需要使用 Perl DateTime模块获取昨天的日期。
当天的当前时间并不重要。我只需要昨天的日期,所以我认为我可以在减去一天之前截断当天的时间值。
这看起来应该足够简单,但我最终得到了错误的结果。
use DateTime;
use strict;
use warnings;
my $today = DateTime->now(time_zone => 'local');
# Set time zone to UTC before performing math (see DateTime documentation)
$today->set_time_zone('UTC');
my $yesterday = $today->clone->truncate(to => 'day')->subtract(days => 1);
# Set time zone back to local
$today->set_time_zone('local');
$yesterday->set_time_zone('local');
print "YESTERDAY: ".$yesterday->strftime("%m/%d/%Y")."\n";
print " TODAY: ".$today->strftime("%m/%d/%Y")."\n";
此代码输出:
YESTERDAY: 11/30/2024
TODAY: 12/02/2024
请注意,如果我不这样做,->truncate(to => 'day')
我似乎会得到正确的结果,但我仍然对截断日期时间会导致结果改变这一事实感到困惑。
有人知道为什么会发生这种情况吗?