How to get a date after a specific number of days? (341 Views)
Reply
Frequent Advisor
Vidhya B
Posts: 80
Registered: ‎11-03-2010
Message 1 of 17 (341 Views)
Accepted Solution

How to get a date after a specific number of days?

Hi all,

My date is in the format mmddyy. I need to know the date after say 25 days. Is there any specific command which can accompolish this?

Thanks in Advance!!
Please use plain text.
Trusted Contributor
nijokj
Posts: 114
Registered: ‎09-13-2010
Message 2 of 17 (340 Views)

Re: How to get a date after a specific number of days?

[ Edited ]

Please find the below thread in that there is a script from A. Clay Stephenson.kindly check whether it help you or not?
http://h30499.www3.hp.com/t5/System-Administration/favourite-sysadmin-scripts-you-always-keep-around...

Please use plain text.
Trusted Contributor
Jorge Pons
Posts: 406
Registered: ‎06-18-2001
Message 3 of 17 (340 Views)

Re: How to get a date after a specific number of days?

Hi

could be with crontab?

Regards, Jorge
Please use plain text.
Frequent Advisor
Vidhya B
Posts: 80
Registered: ‎11-03-2010
Message 4 of 17 (340 Views)

Re: How to get a date after a specific number of days?

Hi,

Thank you all for your replies.

Is there any other specific command to do that?

Please use plain text.
Honored Contributor
Duncan Edmonstone
Posts: 5,678
Registered: ‎08-05-2000
Message 5 of 17 (341 Views)

Re: How to get a date after a specific number of days?

If you have the GNU coreutils installed, you can use the GNU date command, which has a pile of date arithmetic capabilities. You can get GNU coreutils here:

http://hpux.connect.org.uk/hppd/hpux/Gnu/coreutils-8.6/

Don't miss the run-time dependencies required as well.

With GNU date installed you can run:

date --d "+25 days" +%m%d%y

You'll need to put the path to the GNU date command in front of that, otherwise it will just invoke the HP-UX date command.

No doubt the perl-mongers on the forums will also be able to give you a perl one-liner for this as well.

HTH

DUncan

HTH

Duncan
Please use plain text.
Advisor
satheeshnp
Posts: 42
Registered: ‎10-12-2010
Message 6 of 17 (340 Views)

Re: How to get a date after a specific number of days?

Hi,

This might help you. Try this.

Result=$(perl -MPOSIX -le 'print strftime "%d%b",localtime(time+(60*60*24*25))')

Please use plain text.
Acclaimed Contributor
James R. Ferguson
Posts: 21,184
Registered: ‎07-06-2000
Message 7 of 17 (340 Views)

Re: How to get a date after a specific number of days?

Hi:

You might note that by using Perl and the 'strftime' function you can choose any date format you want. The format directives are equivalent to those you are familiar with in the 'date' command. Of course, see too the manpages for 'strftime(3C)'. For example:

# perl -MPOSIX -le 'print strftime "%d %b",localtime(time+(60*60*24*25))'
14 Mar

# perl -MPOSIX -le 'print strftime "%m/%d/%Y",localtime(time+(60*60*24*25))'
03/14/2011

# perl -MPOSIX -le 'print strftime "%m/%d/%Y %H:%M",localtime(time+(60*60*24*25))'
03/14/2011 09:08

Regards!

...JRF...





Please use plain text.
Frequent Advisor
Vidhya B
Posts: 80
Registered: ‎11-03-2010
Message 8 of 17 (340 Views)

Re: How to get a date after a specific number of days?

Hi,

That perl scripting really worked. Thanks a lot:)

But I am able to find the date after 25 days from today's date. Is there anyother modification I can do so that the perl will take my input?

Actually I need to find the date after 25 days from a specific date but not from today's date.Kindly help.
Please use plain text.
Acclaimed Contributor
James R. Ferguson
Posts: 21,184
Registered: ‎07-06-2000
Message 9 of 17 (340 Views)

Re: How to get a date after a specific number of days?

Hi:

> Actually I need to find the date after 25 days from a specific date but not from today's date.

You can begin with something like this an embellish as you like. Notice that I require the input as YYYYMMDD.

# cat ./fromwhen
#!/usr/bin/perl
use strict;
use warnings;
use POSIX qw(strftime);
use Time::Local;
my $date = shift or die "Date (YYYYMMDD) expected\n";
die "YYYMMDD expected\n" unless
my ( $yyyy, $mm, $dd ) = ( $date =~ /(\d{4})(\d\d)(\d\d)/ );
my $when = shift or die "Number of days in future expected\n";
my $secs = timelocal(0, 0, 0, $dd, $mm-1,$yyyy );
print strftime "%Y/%m/%d\n",localtime($secs+(60*60*24*$when));
1;

...run as (for example):

# .l/fromwhen 20110218 13
2011/03/03

...which yields the date thirteen (13) days from February 18, 2011.

Regards!

...JRF...
Please use plain text.
Frequent Advisor
Vidhya B
Posts: 80
Registered: ‎11-03-2010
Message 10 of 17 (340 Views)

Re: How to get a date after a specific number of days?

Hi,

Thankyou for the replies.

I tried the script. I don't how exactly to run that script. I found no good results. I think I have done some mistake. Please help me with this.
Please use plain text.
Acclaimed Contributor
James R. Ferguson
Posts: 21,184
Registered: ‎07-06-2000
Message 11 of 17 (338 Views)

Re: How to get a date after a specific number of days?

Hi:

> I tried the script. I don't how exactly to run that script. I found no good results. I think I have done some mistake.

Copy&paste the script I posted into a file named as you wish. Set execute permissions and then run it passing two arguments --- the first is the YYYYMMDD from which you want to count. The second argument is the number of days from the first argument date that you want to compute.

For example, I called the script 'fromwhen'. Hence:

# cd <script directory>
# chmod 555 ./fromwhen
# ./fromwhen 20110318 25
2011/04/12

...which shows that April 12 is 25-days from March 18.

Regards!

...JRF...
Please use plain text.
Honored Contributor
Hein van den Heuvel
Posts: 6,585
Registered: ‎05-19-2003
Message 12 of 17 (338 Views)

Re: How to get a date after a specific number of days?

>> I tried the script. I don't how exactly to run that script. I found no good results. I think I have done some mistake. Please help me with this.


Hmmm. It works for me.
It came with usage example and has 'help' build in.

copy & paste into a (text) file.
In the example: "fromwhen"

Make executable
chmod +x fromwhen

Run it with 2 arguments... a date and days
Example:
./fromwhen 20080101 32
2008/02/02

Maybe your perl is not in the standard place?
Try 'which perl'

Anyway...


>> I found no good results.

So what did you get? Error message? Unexpected values? Show and tell!
We can not read your mind, nor your screen.

Cheers,
Hein.
Please use plain text.
Acclaimed Contributor
James R. Ferguson
Posts: 21,184
Registered: ‎07-06-2000
Message 13 of 17 (338 Views)

Re: How to get a date after a specific number of days?

Hi (again):

If your Perl isn't in '/usr/bin' simply change the 'shebang' line at the top of the script to point to the correct location.

Most commonly, you declare '#!/usr/bin/perl' in your scripts and simply symlink the Perl binary accordingly. This allows your scripts to make a static declaration while your binaries are installed in various subdirectories of '/opt' or '/usr' as your needs dictate.

Doing a 'whereis perl' is one way to find where 'perl' is. Another option is to use this for the 'shebang' (interpreter line):

#!/usr/bin/env perl

If you do this, the Perl interpreter will be "automatically" located for you.

As always, a problem description of "it doesn't work" doesn't provide any useful information. Be specific. Exactly what did you do and exactly what were the results you obtained. A good problem description leads to a good resolution.

Regards!

...JRF...

Please use plain text.
Frequent Advisor
Vidhya B
Posts: 80
Registered: ‎11-03-2010
Message 14 of 17 (338 Views)

Re: How to get a date after a specific number of days?

Hi,

I tried running the script in the way you mentioned.

Here is my error message:

#./fromwhen 20110318 02
./fromwhen[3]: use: not found.
./fromwhen[4]: use: not found.
./fromwhen[5]: Syntax error at line 5 : `(' is not expected.


Here is my whereis perl output :

#whereis perl
perl: /usr/bin/perl /opt/dsau/bin/perl /opt/dsau/sbin/perl /opt/perl/bin/perl /opt/perl_32/bin/perl /opt/perl_64/bin/perl /opt/VRTSperl/bin/perl /usr/eccperl/bin/perl /opt/perl/man/man1/perl.1 /opt/perl_32/man/man1/perl.1 /opt/perl_64/man/man1/perl.1 /opt/VRTSperl/man/man1/perl.1

Kindly help me with this.
Please use plain text.
Honored Contributor
Patrick Wallek
Posts: 13,758
Registered: ‎06-21-2000
Message 15 of 17 (338 Views)

Re: How to get a date after a specific number of days?

Do you have the first line of the script as:

#!/usr/bin/perl

If not, make that the first line and then try again.
Please use plain text.
Honored Contributor
Hein van den Heuvel
Posts: 6,585
Registered: ‎05-19-2003
Message 16 of 17 (338 Views)

Re: How to get a date after a specific number of days?

Ah, looks like you have the line "# cat ./fromwhen" as the first line in the script.
Remove that.
That was there just for clarification, not for inclusion.

Hein

Please use plain text.
Acclaimed Contributor
James R. Ferguson
Posts: 21,184
Registered: ‎07-06-2000
Message 17 of 17 (338 Views)

Re: How to get a date after a specific number of days?

Hi (again):

If you don't have an interpreter ("shebang") line in a file, then the shell is assumed.

Hence, if you don't have:

#!/usr/bin/perl

...as the first line of the script, then:

# /usr/bin/sh

...is assumed, and that leads to errors as the shell interpreter attempts to parse Perl syntax!

_Always_ begin your scripts with the interpreter declaration!

Regards!

...JRF...
Please use plain text.
The opinions expressed above are the personal opinions of the authors, not of HP. By using this site, you accept the Terms of Use and Rules of Participation