通过从彼此中减去两个日期时间对象,我遇到了一些问题.我使用以下代码:
$today = DateTime->now( time_zone => 'Europe/Berlin' ); my $dt1 = DateTime-> new ( year => 2011,month => 08,day => 08,hour => 1,minute => 0,second => 4,time_zone =>'Europe/Berlin' ); print "DT1 : $dt1\n"; print "today: $today\n"; my $sub = $today->subtract_datetime($dt1); print "sub days: ".$sub->days."\n";
DT1的打印声明今天打印:
DT1 : 2011-08-08T01:00:04 today: 2011-08-16T08:34:10
但是,如果我在减法后打印$sub-> days值,则显示1而不是8天.
我的减法中有错误吗?
非常感谢您的帮助.
解决方法
DateTime :: Duration不能像你(和我)预期的那样工作.检查$sub的所有字段:
DT1 : 2011-08-08T01:00:04 today: 2011-08-16T09:02:11 $sub->years: 0 $sub->months: 0 $sub->weeks: 1 $sub->days: 1 $sub->hours: 8 $sub->minutes: 2 $sub->seconds: 7
两个日期之间的差异是1周1天,预计8天.
如果您想要天数差异,请尝试$today-> delta_days($dt1). delta_days()方法返回的持续时间仅包含天数(编辑)和周数,但不包含月数.