Perl:通过转换为秒来计算天数
发布时间:2020-12-15 21:58:52 所属栏目:大数据 来源:网络整理
导读:我试图计算从数据库中提取的两个日期之间的日历天数.我认为将日期转换为秒将是一个简单而正确的解决方案. #!/usr/bin/perluse warnings;use strict;use POSIX qw(strftime);use Date::Parse;my $minDate = "2016-03-27";my $maxDate = "2016-06-15";print "F
我试图计算从数据库中提取的两个日期之间的日历天数.我认为将日期转换为秒将是一个简单而正确的解决方案.
#!/usr/bin/perl use warnings; use strict; use POSIX qw(strftime); use Date::Parse; my $minDate = "2016-03-27"; my $maxDate = "2016-06-15"; print "Format as extracted from db: mindate: $minDate and maxdate: $maxDaten"; my ($dbYear,$dbMonth,$dbDay) = split ('-',$minDate); my $datum = "$dbYear$dbMonth$dbDay"; my $minDateSec = str2time($datum); ($dbYear,$maxDate); $datum = "$dbYear$dbMonth$dbDay"; my $maxDateSec = str2time($datum); my $numCalDaysSec = ($maxDateSec-$minDateSec)/86400; print "Min date in Seconds: $minDateSecn"; print "Max date in Seconds: $maxDateSecn"; print "Num days: $numCalDaysSecn"; 最初,我认为这种方法为我提供了可靠的结果: bash-3.2$./testNumDays.pl As extracted from db: mindate: 2016-06-14 and maxdate: 2016-06-15 Min date in Seconds: 1465855200 Max date in Seconds: 1465941600 Num days: 1 bash-3.2$./testNumDays.pl As extracted from db: mindate: 2016-05-31 and maxdate: 2016-06-15 Min date in Seconds: 1464645600 Max date in Seconds: 1465941600 Num days: 15 bash-3.2$./testNumDays.pl As extracted from db: mindate: 2016-03-28 and maxdate: 2016-06-15 Min date in Seconds: 1459116000 Max date in Seconds: 1465941600 Num days: 79 bash-3.2$./testNumDays.pl As extracted from db: mindate: 2016-03-27 and maxdate: 2016-06-15 Min date in Seconds: 1459033200 Max date in Seconds: 1465941600 Num days: 79.9583333333333 bash-3.2$ 显然,日期之间的日历日期数应该是整数.嗯,我做错了什么?为什么转换为秒不可靠? 由于我是一个Perl新手,我可能会忽略这一点.因此,非常欢迎任何帮助. 解决方法
一种方法是使用
Time::Piece核心模块:
use warnings; use strict; use Time::Piece qw(); my $t1 = Time::Piece->strptime('2016-03-27','%Y-%m-%d'); my $t2 = Time::Piece->strptime('2016-06-15','%Y-%m-%d'); my $seconds = $t2 - $t1; print $seconds->days(),"n"; __END__ 80 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |