Reputation: 141
How can I get previous date from current date, I have below chunk of code. kindly help out.
Need in this format: eg: 07/16/2015
#!/usr/bin/perl
$current_date = `date +"%m/%d/%Y"`;
$current_date = substr($current_date,0,-1);
print $current_date, "\n";
Upvotes: 3
Views: 3494
Reputation: 69274
This is easy with localtime.
This gives the date (and time) 24 hours ago. This might not be the previous day at around the switch to or from daylight saving time.
use constant ONE_DAY => 24 * 60 * 60;
say scalar localtime time - ONE_DAY;
To control the format, use POSIX::strftime
.
use POSIX 'strftime';
use constant ONE_DAY => 24 * 60 * 60;
my @then = localtime time - ONE_DAY;
say strftime '%Y-%m-%d', @then;
For more complex date and time handling, I'd reach for Time::Piece or DateTime.
Upvotes: 4
Reputation: 126722
I assume you want yesterday's date?
The Time::Piece
module is in core, and is very much smaller than DateTime
The code looks like this
use strict;
use warnings;
use 5.010;
use Time::Piece;
use Time::Seconds 'ONE_DAY';
my $yesterday = ( localtime() - ONE_DAY )->mdy('/');
say $yesterday;
07/15/2015
Upvotes: 3
Reputation: 54333
There is no need to use a system call for that. Perl has it built in. One way to do it is with DateTime.
use strict;
use warnings;
use feature 'say';
use DateTime;
my $yesterday = DateTime->today->subtract( days => 1 )->mdy('/');
say $yesterday;
Upvotes: 1
Reputation: 21
Today's Date is 07/16/2015
use strict;
use DateTime;
my $date = DateTime->now->subtract( days => 1)->mdy('/');
Output Date is
07/15/2015
I hope you get the answer.
Upvotes: 0
Reputation: 50647
Using perl core modules,
use Time::Piece;
use Time::Seconds;
my $t = localtime() - ONE_DAY;
print $t->mdy("/"), "\n";
Upvotes: 2