我是Perl的新手。我想在输入后计算天数(例如5天)。
我需要涵盖的步骤:
1. start_date:08.12.2015
2.加5天
3.结束日期:?
我的想法是将开始日期转换为时间戳。然后我加5 * 84.400秒。之后,我想重新转换结束时间戳。
我阅读了Time::Local
模块文档,但我还没有理解逻辑。
这是处理日期计算的正确方法吗?
答案 0 :(得分:5)
您可以使用DateTime
和DateTime::Format::Strptime
来完成此操作。像这样:
use strict;
use DateTime;
use DateTime::Format::Strptime;
my $strp = DateTime::Format::Strptime->new(
pattern => '%d.%m.%Y'
);
my $date = '08.12.2015';
my $dt = $strp->parse_datetime($date);
printf "%s -> %s\n", $date, $dt->add(days => 5)->strftime("%d.%m.%Y");
答案 1 :(得分:4)
#!/usr/bin/env perl
use v5.10;
use Time::Piece;
use Time::Seconds;
my $date_string = '08.12.2015';
my $date_format = '%m.%d.%Y';
my $tp = Time::Piece->strptime( $date_string, $date_format );
$tp += 5 * ONE_DAY;
say $tp->strftime($date_format);
输出:
08.17.2015
答案 2 :(得分:0)
或者另一种方式,在vanilla perl中(不需要使用包),在Unix date
的帮助下:
$ date -d 08/12/2015
Wed, Aug 12, 2015 12:00:00 AM
$ date -d 08/12/2015 +%s
1439352000
$ date -d 08/12/2015 +%s|perl -ne 'print scalar localtime $_ + 5*24*60*60'
Mon Aug 17 00:00:00 2015