Sponsored Content
Full Discussion: date difference
Top Forums UNIX for Advanced & Expert Users date difference Post 69110 by mtnbaby on Tuesday 12th of April 2005 02:23:00 AM
Old 04-12-2005
Data date difference

Hi...I need some help with a date script. I need to allow the user to enter the month (alpha) day (int) and year (YYYY) and count the difference in number of days since Jan 1, 1952 to the users date. I've been messing with this for about 10 hours and I think I'm just making the script worse =(

Please help Smilie

#!/bin/bash
# grpdif: Number of days between two dates.
# Usage: ./grpdif 01/01/2001
# [M]M/[D]D/YYYY
ARGS=1 # Two command line parameters expected.
E_PARAM_ERR=65 # Param error.
REFYR=1940 # Reference year.
REFMO=1 # Reference month.
REFDY=1 # Reference day.
CENTURY=100
DIY=365
ADJ_DIY=367 # Adjusted for leap year + fraction.
MIY=12
DIM=31
LEAPCYCLE=4
diff= # Declare global variable for date difference.
value= # Declare global variable for absolute value.
day= # Declare globals for day, month, year.
month=
year=
MAXRETVAL=255 # Largest permissable
#+ positive return value from a function.

Param_Error () # Command line parameters wrong.
{
echo "Usage: `basename $0` [M]M/[D]D/YYYY"
exit $E_PARAM_ERR
}


Parse_Date () # Parse date from command line params.
{
month=${1%%/**}
dm=${1%/**} # Day and month.
day=${dm#*/}
let "year = `basename $1`"
}

check_date () # Checks for invalid date(s) passed.
{
[ "$day" -gt "$DIM" ] || [ "$month" -gt "$MIY" ] || [ "$year" -lt "$REFYR" ] && Param_Error
# Exit script on bad value(s).
# Uses "or-list / and-list".
#
let "year=$REFYR"
let “month=$REFMO”
let “day=$REFDY”
let "indexyr = $year / $CENTURY"
let "Days = $DIY*$year + $year/$LEAPCYCLE - $indexyr + $indexyr/ $LEAPCYCLE + $ADJ_DIY*$month/$MIY + $day - $DIM"
echo $Days
}

day_index ()
{ # Days from Jan. 1, 1952 to date passed as param.

day=$1
month=$2
year=$3

let "month = $month - 2"
if [ "$month" -le 0 ]
then
let "month += 12"
let "year -= 1"
fi

let "year -= $REFYR"
let "month -=$REFMO"
let "day -=$REFDY"
let "indexyr = $year / $CENTURY"
let "Days = $DIY*$year + $year/$LEAPCYCLE - $indexyr + $indexyr/$LEAPCYCLE + $ADJ_DIY*$month/$MIY + $day - $DIM"
echo $Days
}

calculate_difference () # Difference between to day indices.
{
let "diff = $1 - $2" # Global variable.
}

if [ $# -ne "$ARGS" ] # Require two command line params.
then
Param_Error
fi

Parse_Date $1
check_date $day $month $year # See if valid date.
day=$? # on day and/or month.
month=$?
let "date1 = `day_index $day $month $year`"


Parse_Date $2
check_date $day $month $year
day=$?
month=$?
let "date2 = $(day_index $day $month $year)"


calculate_difference $date1 $date2

diff=$value
echo $diff
exit 0
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

date difference

Hi Can any buddy give mi a simple program or logic or command which will get difference between two dates ex:diff between 20051008 2005908 is 24hours 12 min 2 sec regards (1 Reply)
Discussion started by: rajuMBT
1 Replies

2. Shell Programming and Scripting

date difference

if there are two date one is entered by user and another is system date than how can we finds day difference between these two date try to make it within 4 lines (2 Replies)
Discussion started by: piyush_movadiya
2 Replies

3. Linux

date difference

hi, i have 2 dates in the form: '20080315120030' and '20080310140030'. i.e. YYYYMMDDHHMMSS. i need a way of getting the difference between them using shell script. any thoughts? (14 Replies)
Discussion started by: muay_tb
14 Replies

4. Shell Programming and Scripting

difference in date

Hi All! I would like to know the time difference between two dates which are in same format... $ date -r abc Thu Oct 29 09:40:37 EDT 2009 $ date Fri Oct 30 02:07:03 EDT 2009 i would like to find the diff between these two dates in hours..please help..:) Regards, Kiran (3 Replies)
Discussion started by: dddkiran
3 Replies

5. Shell Programming and Scripting

Difference in date

Dear all, I fancy that I'm pretty competent in ksh, but I have someone on HP-UX wanting me to script up a simple interface to handle user alterations rather than giving them high privileges to run up SAM. This is all fairly straightforward, but I'm stuck on an epoch date issue. When we have... (6 Replies)
Discussion started by: rbatte1
6 Replies

6. Homework & Coursework Questions

help with the date difference

1. The problem statement, all variables and given/known data: The problem i have is that i probably make a few mistake here in the code but don't know what it is and i try to get the date difference but don't know where to add the days_in_month function 2. Relevant commands, code,... (1 Reply)
Discussion started by: mgyeah
1 Replies

7. Programming

Date difference

I tried the below code to find difference between two dates. It works fine if the day of the month is 2-digit number. But it fails when we have a single-digit day of month(ex:1-9). my code is as below. please help me soon. #!/usr/bin/perl -w use strict; use Time::Local; ... (2 Replies)
Discussion started by: anandrec
2 Replies

8. Shell Programming and Scripting

Date difference

HI All , i need a bash script to find the number of days between two dates . Format YYYY-MM-DD THanks, Neil (1 Reply)
Discussion started by: nevil
1 Replies

9. AIX

Time Difference between date and date -u

Hi Everyone, We are having an issue with date and date -u in our AIX Systems. We have checked environment variable TZ and /etc/environment and however, we could not rectify the difference. >date Thu Mar 19 22:31:40 IST 2015 >date -u Thu Mar 19 17:01:44 GMT 2015 Any clue... (5 Replies)
Discussion started by: madhav.kunapa
5 Replies

10. Shell Programming and Scripting

Difference between two date

Hi, I created a script for finding the duration of a job using the start and end time of the job. But the command doesnt calculate correct value if the duration is more than 24 hours. Any help would be really good . cat test1 --- start time 03/27/15 17:41:00 03/24/15 11:58:04 03/23/15... (3 Replies)
Discussion started by: rogerben
3 Replies
hdate_struct(3) 						libhdate C language						   hdate_struct(3)

NAME
hdate_struct - libhdate Hebrew date struct SYNOPSIS
#include <hdate.h> Data Fields int hd_day int hd_mon int hd_year int gd_day int gd_mon int gd_year int hd_dw int hd_size_of_year int hd_new_year_dw int hd_year_type int hd_jd int hd_days int hd_weeks Detailed Description libhdate Hebrew date struct Field Documentation int hdate_struct::hd_day The number of day in the hebrew month (1..31). int hdate_struct::hd_mon The number of the hebrew month 1..14 (1 - tishre, 13 - adar 1, 14 - adar 2). int hdate_struct::hd_year The number of the hebrew year. int hdate_struct::gd_day The number of the day in the month. (1..31) int hdate_struct::gd_mon The number of the month 1..12 (1 - jan). int hdate_struct::gd_year The number of the year. int hdate_struct::hd_dw The day of the week 1..7 (1 - sunday). int hdate_struct::hd_size_of_year The length of the year in days. int hdate_struct::hd_new_year_dw The week day of Hebrew new year. int hdate_struct::hd_year_type The number type of year. int hdate_struct::hd_jd The Julian day number int hdate_struct::hd_days The number of days passed since 1 tishrey int hdate_struct::hd_weeks The number of weeks passed since 1 tishrey Author Generated automatically by Doxygen for libhdate C language from the source code. Version 1.4 Sun Jan 8 2012 hdate_struct(3)
All times are GMT -4. The time now is 05:15 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy