If you don't have GNU date, then another alternative is perl if you have that. From your input date, we need to split it up the values and feed them in:-
Code:
#!/bin/ksh
input_date=$1
in_yyyy="${input_date%????}" # Remove last four characters
in_dd="${input_date#??????}" # Remove lead four characters
in_mm="${input_date#????}" # Remove lead four characters
in_mm="${in_mm%??}" # Remove last two characters from previously split value
((temp_mm=$in_mm-1)) # Reduce month by one as epoch counts from 1/1/1970 as zero
# Get time in seconds since epoch
perl -e "use Time::Local; print timelocal(0,0,0,$in_dd,$temp_mm,$in_yyyy), ;" | read in_seconds
# Go back one day in seconds
((out_seconds=$in_seconds-86400))
# Display answer in required format
perl -e 'use POSIX qw(strftime);print scalar(strftime "%Y%m%d", localtime $ARGV[0]), "\n";' $out_seconds
I hope that this meets the brief you have given us. There may be smarter ways to read & split the input date, so I'm open to suggestions.
Obviously some validity checking on the input would be wise else you will get various horrible messages from the perl
I've put it in a script called 254222 (thread number) and tested it as shown:-
Hi,
I would like to find out how can i calculate a date which is 3 months ago. I intend to run a cron job on the 1st of every month, and calculate the month 4 months earlier from the date. For example, if today's date is 1st May 2007, i would like to return 012007( January 2007).
i can get... (1 Reply)
I want to calculate the date of next satureday of current date using shell script.
Suppose, today is 27-feb-08
I want to get the date of next satureday, which means 01-mar-08, in the formate '' YYMMDD ".
I do this in ksh..
Please tell me any type of command which help me out.
Thanks in... (3 Replies)
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)
Hello
I would like to help me create a script that:
Given a date, more precisely a year, one month and one day. must calculate the day after
-Input: Year, Month, Day
-Output: Next day the Year-Month-Day
thanks (9 Replies)
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)
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)
How to get Julian date (Three digit) of a given date (Not current date)? I do not have root privilege - so can not use date -d. Assume that we have three variables year, month and date.
Thx (5 Replies)
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
LEARN ABOUT DEBIAN
lire::time
Time(3pm) LogReport's Lire Documentation Time(3pm)NAME
Lire::Time - parses and prints date in formats common to many log files.
SYNOPSIS
use Lire::Time qw/ syslog2cal /;
my @ltime = localtime;
while ( <LOGFILE> ) {
#...
my $time = syslog2cal( $m, $d, $t, @ltime );
}
DESCRIPTION
This module supplies many functions to parse dates in formats that you are likely to encounter in log files. It also offers many functions
to format epoch time in useful format.
NOTE ABOUT FUNCTION EXPORT
Altough all documented functions are exported by default to the caller namespace, you should explicitely import the functions you require
since exporting by default isn't recommanded by the perl modules guidelines.
DATE PARSING FUNCTIONS
This module includes several functions that convert between a more human readable date format and UNIX epoch time. All parsing functions
will return the number of seconds since Jan 1 1970 00:00:00 UTC and will die() when passed invalid arguments.
date2cal()
my $time = date2cal( $year, $month, $day, $time, [$timezone] );
my $time = date2cal( "2001 Mar 20 09:32:29 +0100" );
This function will convert a date in the date(1) default output format to UNIX epoch time. The function accepts either the date in a string
or splitted on whitespace. If the timezone component is omitted, the local timezone is assumed (usually based on the value of the TZ
environment variable).
syslog2cal()
my $time = syslog2cal( $month, $day, $time, $local_tm_ref );
my $time = syslog2cal( "Mar 11 13:21:00", $local_tm_ref );
This function will convert a date in the syslog default output format to UNIX epoch time. The function accepts either the date in a string
or splitted on whitespace.
Since the syslog format doesn't contain timezone information, the local timezone is assumed (usually determined by the TZ environment
variable).
The last argument is a reference to an array returned by localtime().
my $local_tm_ref = [localtime()];
It is used to determine the year.
clf2cal()
my $time = clf2cal( "[18/Mar/2001:15:59:30 +0100]" );
This function will convert a date as found in Common Log Format to UNIX epoch time.
DATE FORMATING FUNCTIONS
This module includes some functions to convert date in UNIX epoch time to some more human readable output. All functions will die() when
passed invalid arguments.
cal2rfc()
print cal2rfc( $time );
This function will convert a date in UNIX epoch time to the RFC822 format (used in email, for example). A RFC822 date looks like
Wed, 30 May 2001 12:45:13 +0000
The timezone offset specification will correspond to the local timezone (usually determined by the TZ environment variable).
cal2ymdhms()
print cal2ymdhms( $time );
This function converts a date in UNIX epoch time to a string of the form:
YYYYMMDDHHMMSS
This representation will correspond the time in the local timezone (usually determined by the TZ environment variable.)
getMonthName()
print getMonthName( 0 ); # Gives 'Jan'
This function takes as parameter a number (0-11) representing the month (as returned by localtime() for example) and will return the
English abbreviated name of that month ( Jan, Feb, etc. ).
AUTHOR
Joost van Baal <joostvb@logreport.org>
VERSION
$Id: Time.pm,v 1.10 2006/07/23 13:16:30 vanbaal Exp $
COPYRIGHT
Copyright (C) 2000-2002 Stichting LogReport Foundation LogReport@LogReport.org
This file is part of Lire.
Lire is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program (see COPYING); if not, check with
http://www.gnu.org/copyleft/gpl.html.
Lire 2.1.1 2006-07-23 Time(3pm)