Sponsored Content
Top Forums Shell Programming and Scripting Need to minus one day from a date given Post 303000132 by Chubler_XL on Tuesday 4th of July 2017 07:05:46 PM
Old 07-04-2017
You could use perl

save this as dayadd.pl:
Code:
#! /usr/bin/env perl
use Time::Local;
use POSIX qw(strftime);

 my ($yy, $mm, $dd) = unpack "A4A2A2", $ARGV[0];
 eval { print strftime("%Y%m%d\n", localtime(timelocal(0,0,0,$dd,$mm - 1,$yy) + $ARGV[1]*24*60*60)) } ;
 exit 1 if $@ ;
 exit 0;

Then you can use it like this:
Code:
$ ./dayadd.pl 20141220 -1 || echo "Invalid date!"
20141219

$ ./dayadd.pl 20132202 -1 || echo "Invalid date"
Invalid date


Last edited by Chubler_XL; 07-04-2017 at 08:22 PM..
This User Gave Thanks to Chubler_XL For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Script to find previous month last day minus one day timestamp

Hi All, I need to find the previous month last day minus one day, using shell script. Can you guys help me to do this. My Requirment is as below: Input for me will be 2000909(YYYYMM) I need the previous months last day minus 1 day timestamp. That is i need 2000908 months last day minus ... (3 Replies)
Discussion started by: girish.raos
3 Replies

2. UNIX for Dummies Questions & Answers

print previous month (current month minus 1) with Solaris date and ksh

Hi folks month=`date +%m`gives current month Howto print previous month (current month minus 1) with Solaris date and ksh (7 Replies)
Discussion started by: slashdotweenie
7 Replies

3. Shell Programming and Scripting

how to obtain date and day of the week from `date` command

Hi, does anybody know how to format `date` command correctly to return the day of the week? Thanks -A I work in ksh.... (1 Reply)
Discussion started by: aoussenko
1 Replies

4. UNIX and Linux Applications

sqlite: calculating with dates - compare current date minus 6 months with stored record

Hi I have a table with name, date in format DD.MM.YYYY. I need to something like this (I try to explain in pseudo code) if SYSDATE (current date) minus 6 months > $expiry date print OK else print NOK with $name and $expiry date I know this is possible with Oracle. How to do this... (0 Replies)
Discussion started by: slashdotweenie
0 Replies

5. Shell Programming and Scripting

finding the previous day date and creating a file with date

Hi guys, I had a scenario... 1. I had to get the previous days date in yyyymmdd format 2. i had to create a file with Date inthe format yyyymmdd.txt format both are different thanks guys in advance.. (4 Replies)
Discussion started by: apple2685
4 Replies

6. AIX

Need to get the next day's date of the user entered date

I need to get the next day's date of the user entered date for example: Enter date (yyyy/mm/yy): 2013/10/08I need to get the next day's date of the user entered date Desired Output: 2013/10/09Though there are ways to achieve this is Linux or Unix environment (date command) ,I need to... (1 Reply)
Discussion started by: rpm120
1 Replies

7. HP-UX

Actual date minus six months (HP UX)

Hi there, is it possible to get the actual date minux six months with just a simple command? It's easy with Linux but on HP Unix (for me) impossible ;) Best wishes (3 Replies)
Discussion started by: System
3 Replies

8. Homework & Coursework Questions

How to minus 2 month from current date?

I am running a script in ksh to get the 2 months back date from system date.The below code is giving correct date output from putty command prompt.But while running the script is .ksh file it is giving the error below.Please suggest. ; d=a; y=a m-=num while(m < 1) {m+=12; y--}... (1 Reply)
Discussion started by: hini
1 Replies

9. Shell Programming and Scripting

Date minus 1 day

Hi the below code is failing i am trying to generate do the following: 2014-10-22 11:26:00 (Substract 24 hrs) should produce 2014-10-21 11:26:00 I need the same formatting below because that gets inputted into code for an... (4 Replies)
Discussion started by: Samuel12
4 Replies

10. UNIX for Beginners Questions & Answers

Replace date in file every day with current date

I Have text like XXX_20190908.csv.gz need to replace Only date in this format with current date every day Thanks! (1 Reply)
Discussion started by: yamasani1991
1 Replies
Time::y2038(3pm)					User Contributed Perl Documentation					  Time::y2038(3pm)

NAME
Time::y2038 - Versions of Perl's time functions which work beyond 2038 SYNOPSIS
use Time::y2038; print scalar gmtime 2**52; # Sat Dec 6 03:48:16 142715360 DESCRIPTION
On many computers, Perl's time functions will not work past the year 2038. This is a design fault in the underlying C libraries Perl uses. Time::y2038 provides replacements for those functions which will work accurately +/1 142 million years. This only imports the functions into your namespace. To replace it everywhere, see Time::y2038::Everywhere. Replaces the following functions: gmtime() See "gmtime" in perlfunc for details. localtime() See "localtime" in perlfunc for details. timegm() my $time = timegm($sec, $min, $hour, $month_day, $month, $year); The inverse of "gmtime()", takes a date and returns the coorsponding $time (number of seconds since Midnight, January 1st, 1970 GMT). All values are the same as "gmtime()" so $month is 0..11 (January is 0) and the $year is years since 1900 (2008 is 108). # June 4, 1906 03:02:01 GMT my $time = timegm(1, 2, 3, 4, 5, 6); timegm() can take two additional arguments which are always ignored. This lets you feed the results from gmtime() back into timegm() without having to strip the arguments off. The following is always true: timegm(gmtime($time)) == $time; timelocal() my $time = timelocal($sec, $min, $hour, $mday, $month, $year); my $time = timelocal($sec, $min, $hour, $mday, $month, $year, $wday, $yday, $isdst); Like "timegm()", but interprets the date in the current time zone. "timelocal()" will normally figure out if daylight savings time is in effect, but if $isdst is given this will override that check. This is mostly useful to resolve ambiguous times around "fall back" when the hour between 1am and 2am occurs twice. # Sun Nov 4 00:59:59 2007 print timelocal(59, 59, 0, 4, 10, 107); # 1194163199 # Sun Nov 4 01:00:00 2007 DST, one second later print timelocal(0, 0, 1, 4, 10, 107, undef, undef, 1); # 1194163200 # Sun Nov 4 01:00:00 2007 no DST, one hour later print timelocal(0, 0, 1, 4, 10, 107, undef, undef, 0); # 1194166800 $wday and $yday are ignored. They are only there for compatibility with the return value of "localtime()". LIMITATIONS
The safe range of times is +/ 2**52 (about 142 million years). Although the underlying time library can handle times from -2**63 to 2**63-1 (about +/- 292 billion years) Perl uses floating point numbers internally and so accuracy degrates after 2**52. BUGS &; FEEDBACK See http://rt.cpan.org/Dist/Display.html?Queue=Time-y2038 to report and view bugs. If you like the module, please drop the author an email. The latest version of this module can be found at http://y2038.googlecode.com/ and the repository is at http://y2038.googlecode.com/svn/trunk/ in perl/Time-y2038. You have to check out the whole repository because there are symlinks. AUTHOR
Michael G Schwern <schwern@pobox.com> LICENSE &; COPYRIGHT Copyright 2008-2010 Michael G Schwern This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://www.perl.com/perl/misc/Artistic.html SEE ALSO
Time::y2038::Everywhere overrides localtime() and gmtime() across the whole program. The y2038 project at http://y2038.googlecode.com/ <http://xkcd.com/376/> perl v5.14.2 2011-11-15 Time::y2038(3pm)
All times are GMT -4. The time now is 03:12 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy