date difference


 
Thread Tools Search this Thread
Operating Systems Linux date difference
# 8  
Old 03-17-2008
And you are on Linux? What version of date do you have (does it grok "date --version")?

Check your PATH, you might have some weird ancient BSD relic date in your PATH overshadowing the real McCoy ...? (Does "type -all date" reveal any shadows?)

If you have Perl, the Perl FAQ has a nice answer.
era
# 9  
Old 03-17-2008
Quote:
Originally Posted by era
And you are on Linux? What version of date do you have (does it grok "date --version")?

Check your PATH, you might have some weird ancient BSD relic date in your PATH overshadowing the real McCoy ...? (Does "type -all date" reveal any shadows?)

If you have Perl, the Perl FAQ has a nice answer.
my bad I'm actually on a solaris box Smilie

typing date --version threw:

date: illegal option -- -
date: illegal option -- v
date: illegal option -- e
date: illegal option -- r
date: illegal option -- s
date: illegal option -- i
date: illegal option -- o
date: illegal option -- n
usage: date [-u] mmddHHMM[[cc]yy][.SS]
date [-u] [+format]
date -a [-]sss[.fff]

type -all date
date is /usr/bin/date
# 10  
Old 03-17-2008
Actually the "Similar threads" list at the bottom of this page has some nice links. https://www.unix.com/shell-programmin...e-problem.html looks like déjá vu all over again.

This is the Linux forum, otherwise I would not even have suggested date -d. /-:
era
# 11  
Old 03-17-2008
Quote:
Originally Posted by muay_tb
i basically want to delete files over 3 days old in a directory using the current date as a marker...i cant use -mtime as a person may modify the file and the modified time will not be the same as the filename. So therefore i am using the filename as the second time stamp. if you follow me?
Why don't use find to do the job?

Code:
find <dir> -name <files> -mtime <+n> -exec rm -f {} \;

Check the manpage for more details of the used options.

Regards
# 12  
Old 03-17-2008
The OP is not on a GNU based platofrm I guess. try perl:
Code:
#!/bin/ksh
sec()
{
        perl -e '
                use POSIX qw(strftime);
                $fmt = "%s";  # %s = seconds in epoch
                $mday = substr("$ARGV[0]", 7, 2);
                $mon =  substr("$ARGV[0]", 4 ,2);
                $year = substr("$ARGV[0]", 0 ,4);    
                $hour = substr("$ARGV[0]", 9 ,2);    
                $min =  substr("$ARGV[0]", 11 ,2);                 
                $sec = substr("$ARGV[0]", 13 ,2);    
                $secs =
                  strftime($fmt, $sec, $min, $hour, $mday , $mon - 1, $year - 1900, -1, -1, -1);
                print int $secs;
                ' "$1"
}

today=$( date "+%Y%m%d%H%M%S" )
today=$( sec $today )
oldat=$( sec "20080313101504" )
ddiff=$(( $today - $oldat ))
echo "$today minus $oldat = $ddiff which is \c"
if [[ $ddiff -lt 259200 ]] ; then
   echo "less than three days \c"
else
   echo "greater than three days \c"
fi  
echo " (259200 seconds)"

# 13  
Old 03-18-2008
Quote:
Originally Posted by jim mcnamara
The OP is not on a GNU based platofrm I guess. try perl:
Code:
#!/bin/ksh
sec()
{
        perl -e '
                use POSIX qw(strftime);
                $fmt = "%s";  # %s = seconds in epoch
                $mday = substr("$ARGV[0]", 7, 2);
                $mon =  substr("$ARGV[0]", 4 ,2);
                $year = substr("$ARGV[0]", 0 ,4);    
                $hour = substr("$ARGV[0]", 9 ,2);    
                $min =  substr("$ARGV[0]", 11 ,2);                 
                $sec = substr("$ARGV[0]", 13 ,2);    
                $secs =
                  strftime($fmt, $sec, $min, $hour, $mday , $mon - 1, $year - 1900, -1, -1, -1);
                print int $secs;
                ' "$1"
}

today=$( date "+%Y%m%d%H%M%S" )
today=$( sec $today )
oldat=$( sec "20080313101504" )
ddiff=$(( $today - $oldat ))
echo "$today minus $oldat = $ddiff which is \c"
if [[ $ddiff -lt 259200 ]] ; then
   echo "less than three days \c"
else
   echo "greater than three days \c"
fi  
echo " (259200 seconds)"

Thanks Jim,

I tried the above code and i noticed you had the substr co ordinates wrong.

i changed it to:

$mday = substr("$ARGV[0]", 6, 2);
$mon = substr("$ARGV[0]", 4 ,2);
$year = substr("$ARGV[0]", 0 ,4);
$hour = substr("$ARGV[0]", 8 ,2);
$min = substr("$ARGV[0]", 10 ,2);
$sec = substr("$ARGV[0]", 12 ,2);

however whenever i run the script i get:

0 minus 0 = 0 which is less than three days

the current date is: 20080318110043 and the test date is the same you used. Smilie
# 14  
Old 03-18-2008
Hmm. Maybe the coordinates I had were correct.... or not -
here is an updated version
Code:
#!/bin/ksh
sec()
{
        perl -e '
                use POSIX qw(strftime);
                $fmt = "%s";  # %s = seconds in epoch
                $mday = substr("$ARGV[0]", 6, 2);
                $mon =  substr("$ARGV[0]", 4 ,2);
                $year = substr("$ARGV[0]", 0 ,4);    
                $hour = substr("$ARGV[0]", 8 ,2);    
                $min =  substr("$ARGV[0]", 10 ,2);                 
                $sec = substr("$ARGV[0]", 12 ,2);    
                $secs =
                  strftime($fmt, $sec, $min, $hour, $mday , $mon - 1, $year - 1900, -1, -1, -1);
                print int $secs;
                ' "$1"
}
echo "today is = `date` `date "+%s"` as a sanity check"
today=$( date "+%Y%m%d%H%M%S" )
today=$( sec $today )
oldat=$( sec "20080313101504" )
ddiff=$(( $today - $oldat ))
echo "$today minus $oldat = $ddiff which is \c"
if [[ $ddiff -lt 259200 ]] ; then
   echo "less than three days \c"
else
   echo "greater than three days \c"
fi  
echo " (259200 seconds)"

output
Code:
csadev:/home/jmcnama> ddiff.pl
today is = Tue Mar 18 09:39:21 CDT 2008 1205851161 as a sanity check
1205851161 minus 1205421304 = 429857 which is greater than three days  (259200 seconds)


Last edited by jim mcnamara; 03-18-2008 at 11:39 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. 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

5. 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

6. 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

7. 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

8. 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

9. 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

10. UNIX for Advanced & Expert Users

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 =( ... (1 Reply)
Discussion started by: mtnbaby
1 Replies
Login or Register to Ask a Question