Solved

Posted on 2004-09-30
Medium Priority
1,848 Views
Say the current datetime is 17:46:12, I got the time by using localtime(), i want to add 1 hr 30 minutes 55 seconds.
Is there a function in perl to archieve that?
0
Question by:matchz
• 2

LVL 13

Accepted Solution

gripe earned 200 total points
ID: 12190058
You can do this either by converting your time to seconds and adding the seconds to time's output. Such as:

my \$future = "1:30:55";
my (\$hours, \$minutes, \$seconds) = split(/:/, \$future);

\$hours *= 60 * 60;
\$minutes *= 60;
\$seconds += \$hours + \$minutes;

print scalar(localtime(time + \$seconds));

Or there are also some modules available to do this for you. Notably there's Date::Manip:

You can do this either by converting your time to seconds and adding the seconds to time's output. Such as:

my \$future = "1:30:55";
my (\$hours, \$minutes, \$seconds) = split(/:/, \$future);

\$hours *= 60 * 60;
\$minutes *= 60;
\$seconds += \$hours + \$minutes;

print +(localtime(time + \$seconds));

Or there are also some modules available to do this for you. Notably there's Date::Manip:

#!/usr/bin/perl

use warnings;
use strict;
use Date::Manip;

my \$delta = "1:30:55";
my \$date = DateCalc("now", "+ 1hour 30minutes 55seconds");

print \$date;

Hope this helps.
0

LVL 10

Expert Comment

ID: 12190083
Calculating with Epoch seconds is easiest, disregarding the effort to get dates and times into and out of Epoch seconds. This code shows how to calculate an offset (55 days, 2 hours, 17 minutes, and 5 seconds, in this case) from a given base date and time:

\$birthtime = 96176750;                  # 18/Jan/1973, 3:45:50 am
\$interval = 5 +                         # 5 seconds
17 * 60 +                   # 17 minutes
2  * 60 * 60 +              # 2 hours
55 * 60 * 60 * 24;          # and 55 days
\$then = \$birthtime + \$interval;
print "Then is ", scalar(localtime(\$then)), "\n";
Then is Wed Mar 14 06:02:55 1973

Jay
0

LVL 13

Expert Comment

ID: 12190084
Note that the author of Date::Manip himself indicates that it's a big, slow, pure perl module and may not be suitable to all tasks. There are a number of other date manipulation modules on CPAN, but Date::Manip is the most full featured and easy to use.

YMMV
0

LVL 8

Expert Comment

ID: 12209064
It's no longer true that Date::Manip is the most fully featured date manipulation module on CPAN. The Perl Date/Time Project (http://datetime.perl.org/) have created a set of useful modules which you should be looking at for all of your date manipulation needs.

Dave...
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

On Microsoft Windows, if  when you click or type the name of a .pl file, you get an error "is not recognized as an internal or external command, operable program or batch file", then this means you do not have the .pl file extension associated with …
In the distant past (last year) I hacked together a little toy that would allow a couple of Manager types to query, preview, and extract data from a number of MongoDB instances, to their tool of choice: Excel (http://dilbert.com/strips/comic/2007-08…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
Six Sigma Control Plans
###### Suggested Courses
Course of the Month13 days, 14 hours left to enroll