I am working on a perl script to add days to a date and display the newdate:
use Time::ParseDate;
use Time::CTime;
my $date = "02/01/2003";
my $numdays = 30;
my $time = parsedate($date);
# add $numdays worth of seconds
my $newtime = $time + ($numdays * 24 * 60 * 60);
my $newdate = strftime("%m/%d/%Y",localtime($newtime));
print "$newdate\n";
The output will be:
03/03/2003
Run Code Online (Sandbox Code Playgroud)
Now how do I set the input for the date field to be yyyymmdd Ex: my $date = "20030102"
Also the output will need to be : 20030303
Thanks
MkV*_*MkV 11
你使用Time :: Piece + Time :: Seconds(自Perl 5.10以来的核心),
use Time::Piece ();
use Time::Seconds;
my $date = '20030102';
my $numdays = 60; # 30 doesn't get us to march
my $dt = Time::Piece->strptime( $date, '%Y%m%d');
$dt += ONE_DAY * $numdays;
print $dt->strftime('%Y%m%d');
Run Code Online (Sandbox Code Playgroud)
Pav*_*sov 10
你可以使用DateTime+ DateTime::Format::Strptime:
#!/usr/bin/perl
use strict;
use DateTime;
use DateTime::Format::Strptime;
my $strp = DateTime::Format::Strptime->new(
pattern => '%m/%d/%Y'
);
# convert date to
my $date = '02/01/2003';
my $dt = $strp->parse_datetime($date);
printf "%s -> %s\n", $date, $dt->add(days => 30)->strftime("%d/%m/%Y");
Run Code Online (Sandbox Code Playgroud)
OUTPUT
02/01/2003 -> 03/03/2003
Run Code Online (Sandbox Code Playgroud)
将$ date从输入格式转换为旧格式:
$date =~ s%(....)(..)(..)%$3/$2/$1%;
Run Code Online (Sandbox Code Playgroud)
如果输出格式不应该%m/%d/%Y,则不要将其设置为它.你显然需要%Y%m%d.
| 归档时间: |
|
| 查看次数: |
21200 次 |
| 最近记录: |