getting a previous date in bash/unix

64,512

Solution 1

Several solutions suggested here assume GNU coreutils being present on the system. The following should work on Solaris:

TZ=GMT+24 date +’%Y/%m/%d’

Solution 2

try this:

date --date="yesterday" +%Y/%m/%d

Solution 3

you can use

date -d "30 days ago" +"%d/%m/%Y"

to get the date from 30 days ago, similarly you can replace 30 with x amount of days

Solution 4

dtd="2015-06-19"
yesterday=$( date -d "${dtd} -1 days" +'%Y_%m_%d' )
echo $yesterday;

Solution 5

In order to get 1 day back date using date command:

date -v -1d It will give (current date -1) means 1 day before .

date -v +1d This will give (current date +1) means 1 day after.

Similarly below written code can be used in place of d to find out year,month etc

y-Year, m-Month w-Week d-Day H-Hour M-Minute
S-Second

Share:
64,512
misguided
Author by

misguided

Novice Programmer !!!

Updated on January 20, 2020

Comments

  • misguided
    misguided over 4 years

    I am looking to get previous date in unix / shell script .

    I am using the following code

    date -d ’1 day ago’ +’%Y/%m/%d’

    But I am getting the following error.

    date: illegal option -- d

    As far as I've read on the inetrnet , it basically means I am using a older version of GNU. Can anyone please help with this.

    Further Info

    unix> uname -a

    SunOS Server 5.10 Generic_147440-19 sun4v sparc SUNW,Sun-Fire-T200

    Also The below command gives an error.

    unix> date --version

    date: illegal option -- version
    usage:  date [-u] mmddHHMM[[cc]yy][.SS]
    date [-u] [+format]
    date -a [-]sss[.fff]