Sponsored Content
Full Discussion: Calculate datediff
Top Forums Shell Programming and Scripting Calculate datediff Post 303004597 by before4 on Thursday 5th of October 2017 05:22:24 AM
Old 10-05-2017
Quote:
Originally Posted by apmcd47
From your usage of date I would guess that you are (1) using Gnu utilities and therefore (2) are on a Linux distro and therefore (3) using bash.

Try this:
Code:
now=$(date  +"%s")
echo "NOW = ${now}";
file=$(ls -1r *.txt|head -1)
echo "file name is $file"
#filename 201710030549.txt

fdate=$(date -d ${filename:0:8} +"%s")
echo "file date = $fdate"
echo $(( (now - fdate) / 86400 )) days

Adding -r to ls allows us to use head instead of tail. Also, it is unlikely that
there will be a directory with the .txt extension the the -p and the grep should not be needed. The -A is also useless in this context.

The variable expansion ${var:offset:len} will produce len characters from the offset position (starting from zero), so ${filename:0:8} will produce 20171003.

date will understand 20171003 as 3rd October 2017 so you don't need to chop up the date.

Hope this helps.

Andrew
Thanks, that much cleaner.
Code:
ow=$(date  +"%s")
echo "NOW = ${now}";
file=$(ls -1r *.txt|head -1)
echo "file name is $file"
#filename 201710030549.txt
echo ${file:0:8}
fdate=$(date -d ${file:0:8} +"%s")
echo "file date = $fdate"
echo $(( (now - fdate) / 86400 )) days
~

Code:
./test2.sh 
NOW = 1507195265
file name is 201710042019.txt
20171004
file date = 1507050000
1 days

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

calculate from three files

Hi all I have 3 three files like: file1: 1|100 2|200 3|300 4|400 5|500 file2: 1|200 2|200 3|600 4|800 file3: 1|300 2|100 (5 Replies)
Discussion started by: koti_rama
5 Replies

2. AIX

calculate time

Hi, How do I calculate time? I need to create an alert if a process is running more than 30 minutes. I need to get the first time and then get another, calculate it if more than 30 mins and then alert it to pager. Can't find it in internet. Thanks in advance, itik (2 Replies)
Discussion started by: itik
2 Replies

3. Shell Programming and Scripting

calculate the space

Hi everyone, I need to write a script to calculate the space for sub-folders under /home: Here is the scanrio: cd /home drwxr-xr-x 57 root root 8192 Jan 22 16:13 home_1 drwxrwxrwx 69 root root 8192 Jan 29 10:36 home_2 drwxr-xr-x 97 root root 8192 Nov... (8 Replies)
Discussion started by: za_7565
8 Replies

4. Programming

calculate average

I have a file which is 2 3 4 5 6 6 so i am writing program in C to calculate mean.. #include<stdio.h> #include<string.h> #include <math.h> double CALL mean(int n , double x) main (int argc, char **argv) { char Buf,SEQ; int i; double result = 0; FILE *fp; (3 Replies)
Discussion started by: cdfd123
3 Replies

5. Shell Programming and Scripting

How To Calculate

I have 2 variables in my shell scripts in which i am using awk and calculating 2 files and getting 2 different variable called in_total and out_total. I want to subtract one variable from another so plz tell me how i can do that. Example is: cat in_file | awk -F: '{ in_total += $1 * 86400... (3 Replies)
Discussion started by: krishna_sicsr
3 Replies

6. Shell Programming and Scripting

Calculate P Value -Awk

Is there any awk command to calculate P Value ?(Probability) Is it possib;e to calculate P va;ue for this data for ex? 7.891284 8.148193 7.749575 7.958188 7.887702 7.714877 8.141548 7.51845 8.27736 7.929853 7.92456 8.249126 7.989113 8.012573 8.351206 (2 Replies)
Discussion started by: stateperl
2 Replies

7. Shell Programming and Scripting

Calculate age of a file | calculate time difference

Hello, I'm trying to create a shell script (#!/bin/sh) which should tell me the age of a file in minutes... I have a process, which delivers me all 15 minutes a new file and I want to have a monitoring script, which sends me an email, if the present file is older than 20 minutes. To do... (10 Replies)
Discussion started by: worm
10 Replies

8. UNIX for Dummies Questions & Answers

Calculate

i have file input abcedef|wert|13|03|10|04|23|A1|13|05|01|09|31 fsdasdf|ferg|12|04|25|21|21|A1|13|02|26|20|31 dfsfsad|gerg|12|04|25|21|21|A1|13|02|25|25|31 i expect the output abcedef|wert|13|03|10|04|23|A1|13|05|01|09|31|9.516666667... (5 Replies)
Discussion started by: radius
5 Replies

9. Shell Programming and Scripting

Calculate the mean of numbers

I have a text file which has 3 columns. The first two columns are shown below. 57 7 23 8 14 17 23 1 I need to print mean using the following formula . mean =sum of the numbers of $2/total numbers of $1 output:- sum of $2 = 33 total numbers = 4 mean= 8.25 (1 Reply)
Discussion started by: andreaalex
1 Replies

10. Shell Programming and Scripting

How to calculate difference:?

Experts, file1 : Want to find the difference of $3 field from next line's 3rd field, The difference to be calculated from next lines 3rd field, to current lines lines 3rd field. file1 : Jun24_2013.06242013 3301244928 3133059904 167370640 95% Jun25_1124.06252013 3301244928... (4 Replies)
Discussion started by: rveri
4 Replies
DATETIME.SETTIME(3)							 1						       DATETIME.SETTIME(3)

DateTime::setTime - Sets the time

       Object oriented style

SYNOPSIS
public DateTime DateTime::setTime (int $hour, int $minute, [int $second]) DESCRIPTION
Procedural style DateTime date_time_set (DateTime $object, int $hour, int $minute, [int $second]) Resets the current time of the DateTime object to a different time. PARAMETERS
o $object -Procedural style only: A DateTime object returned by date_create(3). The function modifies this object. o $hour - Hour of the time. o $minute - Minute of the time. o $second - Second of the time. RETURN VALUES
Returns the DateTime object for method chaining or FALSE on failure. CHANGELOG
+--------+---------------------------------------------------+ |Version | | | | | | | Description | | | | +--------+---------------------------------------------------+ | 5.3.0 | | | | | | | Changed the return value on success from NULL to | | | DateTime. | | | | +--------+---------------------------------------------------+ EXAMPLES
Example #1 DateTime.setTime(3) example Object oriented style <?php $date = new DateTime('2001-01-01'); $date->setTime(14, 55); echo $date->format('Y-m-d H:i:s') . " "; $date->setTime(14, 55, 24); echo $date->format('Y-m-d H:i:s') . " "; ?> Procedural style <?php $date = date_create('2001-01-01'); date_time_set($date, 14, 55); echo date_format($date, 'Y-m-d H:i:s') . " "; date_time_set($date, 14, 55, 24); echo date_format($date, 'Y-m-d H:i:s') . " "; ?> The above examples will output something similar to: 2001-01-01 14:55:00 2001-01-01 14:55:24 Example #2 Values exceeding ranges are added to their parent values <?php $date = new DateTime('2001-01-01'); $date->setTime(14, 55, 24); echo $date->format('Y-m-d H:i:s') . " "; $date->setTime(14, 55, 65); echo $date->format('Y-m-d H:i:s') . " "; $date->setTime(14, 65, 24); echo $date->format('Y-m-d H:i:s') . " "; $date->setTime(25, 55, 24); echo $date->format('Y-m-d H:i:s') . " "; ?> The above example will output: 2001-01-01 14:55:24 2001-01-01 14:56:05 2001-01-01 15:05:24 2001-01-02 01:55:24 SEE ALSO
DateTime.setDate(3), DateTime.setISODate(3). PHP Documentation Group DATETIME.SETTIME(3)
All times are GMT -4. The time now is 10:49 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy