Sponsored Content
Top Forums Shell Programming and Scripting Calculate 30/31 days from today date script Post 302332387 by coolgoose85 on Thursday 9th of July 2009 02:58:35 AM
Old 07-09-2009
Calculate 30/31 days from today date script

Hi Guys,
I was working some time ago n was in need to calculate date 30/31 days from today including Feb (Leap yr stuff). Today date is variable depending on day of execution of script. I tried searching but was not able to get exactly what I needed....So at that I time I implemented by my own which I have modified to generic so that it may helpful to you guys or somebody else like me in future...... Let me know if u find my problem with script

Code:
###############################################################################
# This Script add 30 days to current date and output next date including
# 28 or days days of February

# Author        Vaibhav Gautam
##############################################################################
#!/bin/ksh
#Start validation date is today date and validation end date is +30 days

lastday=$(cal `date '+%m'` `date '+%Y'` | grep . | fmt -1 | tail -1 )
currentdate=$(date '+%d')
currentmonth=$(date '+%m')
year=$(date '+%Y')

temp=$(($lastday - $currentdate ))

echo "Date Calculation Started"

#Next date after 30 days
#Change Value 31 for 30 days
expirydate=$((30 - $temp ))

if [ $expirydate -gt 0 ]
then
nextmonth=$(($currentmonth + 1 ))

        if [ $nextmonth -eq 2 ]
        then
                #If next month is feb then calculate last day of feb
                lastday_nextmnth=$(cal 2 `date '+%Y'` | grep . | fmt -1 | tail -1 )

                if [ $expirydate -gt $lastday_nextmnth ]
                then
                        carrydate=$(($expirydate - $lastday_nextmnth))
                        nextmonth=$(($nextmonth + 1))
                        echo "Current Date $currentdate/$currentmonth/$year\" Next Date \"$carrydate/$nextmonth/$year\""
                else
                        carrydate=$(($expirydate))
                        echo "Current Date $currentdate/$currentmonth/$year\" Next Date \"$carrydate/$currentmonth/$year\""
                fi
        else
        if [ $nextmonth -gt 12 ]
                then
                nextmonth=1
                nextyear=$(($year + 1 ))
                echo "Current Date $currentdate/$currentmonth/$year\" Next Date \"$expirydate/$nextmonth/$nextyear\""
                else
                echo "Current Date $currentdate/$currentmonth/$year\" Next Date \"$expirydate/$nextmonth/$year\""
                fi
        fi
else
expirydate=$lastday
echo "Current Date $currentdate/$currentmonth/$year\" Next Date \"$expirydate/$currentmonth/$year\""
fi


Last edited by coolgoose85; 07-09-2009 at 05:51 AM..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Script to calculate user's last login to check if > 90 days

I need a script to figure out if a user's last login was 90 days or older. OS=AIX 5.3, shell=Korn Here's what I have so far: ==== #!/usr/bin/ksh NOW=`lsuser -a time_last_login root | awk -F= '{ print $2 }'` (( LAST_LOGIN_TIME = 0 )) (( DIFF = $NOW - $LAST_LOGIN_TIME )) lsuser -a... (3 Replies)
Discussion started by: pdtak
3 Replies

2. Shell Programming and Scripting

Script to copy log files with today's date

I am a newbie to scripting. I need a korn shell script to copy log files of current day to archive folder and rename with current days date stamp. I would really appreciate your help. File structure is as follows. Everyday files get overwritten, so I need copy to a archive directory and... (3 Replies)
Discussion started by: mdncan
3 Replies

3. Shell Programming and Scripting

How to Get 60 days Old date from current date in KSH script

Hi i am writing a cron job. so for it i need the 60 days old date form current date in variable. Like today date is 27 jan 2011 then output value will be stote in variable in formet Nov 27. i am using EST date, and tried lot of solution and see lot of post but it did not helpful for me. so... (3 Replies)
Discussion started by: Himanshu_soni
3 Replies

4. Shell Programming and Scripting

KSH script Not working (calculate days since 1/1/2000 given day 4444)

I am unable to get this KSH script to work. Can someone help. I've been told this should work with KSH93. Which I think I have on Solaris 10. If I do a grep -i version /usr/dt/bin/dtksh I get @(#)Version M-12/28/93d @(#)Version 12/28/93 @(#)Version M-12/28/93 This is correct for... (5 Replies)
Discussion started by: thibodc
5 Replies

5. Shell Programming and Scripting

Calculate the number of days between 2 dates - bash script

I wrote the day calculator also in bash. I would like to now, that is it good so? #!/bin/bash datum1=`date -d "1991/1/1" "+%s"` datum2=`date "+%s"` diff=$(($datum2-$datum1)) days=$(($diff/(60*60*24))) echo $days Thanks in advance for your help! (3 Replies)
Discussion started by: kovacsakos
3 Replies

6. Shell Programming and Scripting

UNIX date fuction - how to deduct days from today's date

Hi, One of my Unix scripts needs to look for files coming in on Fridays. This script runs on Mondays. $date +"%y%m%d" will give me today's date. How can I get previous Friday's date.. can I do "today's date minus 3 days" to get Friday's date? If not, then any other way?? Name of the files is... (4 Replies)
Discussion started by: juzz4fun
4 Replies

7. UNIX for Advanced & Expert Users

Script to rename file that was generated today and which starts with date

hello, can someone please suggest a script to rename a file that was generated today and filename that being generated daily starts with date, its a xml file. here is example. # find . -type f -mtime -1 ./20130529_4995733057260357019.xml # this finename should be renamed to this format.... (6 Replies)
Discussion started by: bobby320
6 Replies

8. Shell Programming and Scripting

Get business days including today's date

I am trying to get last 5 business day . trying for d in Mon Tue Wed Thu Fri do date +%Y%m%d -d "last $d" done gives me date Thu Oct 20 23:56:26 EDT 2016 20161017 20161018 20161019 20161013 20161014 expected output should be 20161017 20161018 20161019 20161020 (2 Replies)
Discussion started by: abhii
2 Replies

9. Linux

How to calculate the quarter end date according to the current date in shell script?

Hi, My question is how to calculate the quarter end date according to the current date in shell script? (2 Replies)
Discussion started by: Divya_1234
2 Replies

10. UNIX for Beginners Questions & Answers

Compare Date to today's date in shell script

Hi Community! Following on from this code in another thread: #!/bin/bash file_string=`/bin/cat date.txt | /usr/bin/awk '{print $5,$4,$7,$6,$8}'` file_date=`/bin/date -d "$file_string"` file_epoch=`/bin/date -d "$file_string" +%s` now_epoch=`/bin/date +%s` if then #let... (2 Replies)
Discussion started by: Greenage
2 Replies
EASTER_DATE(3)								 1							    EASTER_DATE(3)

easter_date - Get Unix timestamp for midnight on Easter of a given year

SYNOPSIS
int easter_date ([int $year = date("Y")]) DESCRIPTION
Returns the Unix timestamp corresponding to midnight on Easter of the given year. Warning This function will generate a warning if the year is outside of the range for Unix timestamps (i.e. before 1970 or after 2037). The date of Easter Day was defined by the Council of Nicaea in AD325 as the Sunday after the first full moon which falls on or after the Spring Equinox. The Equinox is assumed to always fall on 21st March, so the calculation reduces to determining the date of the full moon and the date of the following Sunday. The algorithm used here was introduced around the year 532 by Dionysius Exiguus. Under the Julian Calendar (for years before 1753) a simple 19-year cycle is used to track the phases of the Moon. Under the Gregorian Calendar (for years after 1753 - devised by Clavius and Lilius, and introduced by Pope Gregory XIII in October 1582, and into Britain and its then colonies in September 1752) two correction factors are added to make the cycle more accurate. PARAMETERS
o $year - The year as a number between 1970 an 2037. If omitted, defaults to the current year according to the local time. RETURN VALUES
The easter date as a unix timestamp. EXAMPLES
Example #1 easter_date(3) example <?php echo date("M-d-Y", easter_date(1999)); // Apr-04-1999 echo date("M-d-Y", easter_date(2000)); // Apr-23-2000 echo date("M-d-Y", easter_date(2001)); // Apr-15-2001 ?> NOTES
Note easter_date(3) relies on your system's C library time functions, rather than using PHP's internal date and time functions. As a con- sequence, easter_date(3) uses the TZ environment variable to determine the time zone it should operate in, rather than using PHP's default time zone, which may result in unexpected behaviour when using this function in conjunction with other date functions in PHP. As a workaround, you can use the easter_days(3) with DateTime and DateInterval to calculate the start of Easter in your PHP time zone as follows: <?php function get_easter_datetime($year) { $base = new DateTime("$year-03-21"); $days = easter_days($year); return $base->add(new DateInterval("P{$days}D")); } foreach (range(2012, 2015) as $year) { printf("Easter in %d is on %s ", $year, get_easter_datetime($year)->format('F j')); } ?> The above example will output: Easter in 2012 is on April 8 Easter in 2013 is on March 31 Easter in 2014 is on April 20 Easter in 2015 is on April 5 SEE ALSO
easter_days(3) for calculating Easter before 1970 or after 2037 . PHP Documentation Group EASTER_DATE(3)
All times are GMT -4. The time now is 08:02 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy