Sagar H
Sagar H

Reputation: 141

How to get previous date in Perl Script

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

Answers (6)

Dave Cross
Dave Cross

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

Borodin
Borodin

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;

output

07/15/2015

Upvotes: 3

simbabque
simbabque

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

Mukesh Bhoj
Mukesh Bhoj

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

mpapec
mpapec

Reputation: 50647

Using perl core modules,

use Time::Piece;
use Time::Seconds;

my $t = localtime() - ONE_DAY;
print $t->mdy("/"), "\n";

Upvotes: 2

serenesat
serenesat

Reputation: 4709

You can use DateTime module:

use DateTime;

my $date = DateTime->today;
$date->subtract( days => 1 );

print $date->mdy('/'), "\n";

Upvotes: 2

Related Questions