【发布时间】:2021-12-08 16:38:30
【问题描述】:
我正在尝试使用 Perl 的 DateTime 用符号从另一天减去一天。我可以轻松地度过中间的日子:
sub delta_days {
my $date1 = shift;
my $date2 = shift;
my $d1 = str_to_date_object($date1);
my $d2 = str_to_date_object($date2);
return $d2->delta_days($d1)->delta_days();
}
say delta_days('2021-10-21', '1980-8-20');
say delta_days('1980-8-20', '2021-10-21');
但是这两个调用都给出了 15037 的区别,没有符号。
按照文档https://metacpan.org/pod/DateTime
我明白了
# not DST
my $dt1 = DateTime->new(
year => 2003,
month => 5,
day => 6,
time_zone => 'America/Chicago',
);
# is DST
my $dt2 = DateTime->new(
year => 2003,
month => 11,
day => 6,
time_zone => 'America/Chicago',
);
my $dur = $dt2->subtract_datetime($dt1)->days();
我在How to make DateTime::Duration output only in days? 中检查了一个类似的问题,但我不知道如何在那里获得签名差异。
我怎样才能得到一个标志的天数差异?
【问题讨论】: