How to add an hour or a minute to a time?


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers How to add an hour or a minute to a time?
# 15  
Old 07-26-2011
Thanks radoulov. It works.

Can you please explain what is the difference between the two, in what cases each has to be used and why doesnt $date_var != '' work?
# 16  
Old 07-26-2011
Numerical and string comparisons require different operators.

This is from perldoc perlop:

Quote:
Relational Operators
Binary "<" returns true if the left argument is numerically less than
the right argument.

Binary ">" returns true if the left argument is numerically greater
than the right argument.

Binary "<=" returns true if the left argument is numerically less than
or equal to the right argument.

Binary ">=" returns true if the left argument is numerically greater
than or equal to the right argument.

Binary "lt" returns true if the left argument is stringwise less than
the right argument.

Binary "gt" returns true if the left argument is stringwise greater
than the right argument.

Binary "le" returns true if the left argument is stringwise less than
or equal to the right argument.

Binary "ge" returns true if the left argument is stringwise greater
than or equal to the right argument.

Equality Operators
Binary "==" returns true if the left argument is numerically equal to
the right argument.

Binary "!=" returns true if the left argument is numerically not equal
to the right argument.


Binary "<=>" returns -1, 0, or 1 depending on whether the left argument
is numerically less than, equal to, or greater than the right argument.
If your platform supports NaNs (not-a-numbers) as numeric values, using
them with "<=>" returns undef. NaN is not "<", "==", ">", "<=" or ">="
anything (even NaN), so those 5 return false. NaN != NaN returns true,
as does NaN != anything else. If your platform doesn't support NaNs
then NaN is just a string with numeric value 0.

perl -le '$a = "NaN"; print "No NaN support here" if $a == $a'
perl -le '$a = "NaN"; print "NaN support here" if $a != $a'

Binary "eq" returns true if the left argument is stringwise equal to
the right argument.

Binary "ne" returns true if the left argument is stringwise not equal
to the right argument.


Binary "cmp" returns -1, 0, or 1 depending on whether the left argument
is stringwise less than, equal to, or greater than the right argument.

Binary "~~" does a smart match between its arguments. Smart matching is
described in "Smart matching in detail" in perlsyn.

"lt", "le", "ge", "gt" and "cmp" use the collation (sort) order
specified by the current locale if "use locale" is in effect. See
perllocale.
This User Gave Thanks to radoulov For This Post:
# 17  
Old 07-29-2011
Hi,

This works perfectly fine.
But, $my $min_to_add = 1 * 1 * 60; and my $hr_to_sub = 1 * 1 * 86400; i may need to change the values in future. so am keeping them in a separate configuration file like

Code:
MIN = 1 * 1 * 60 
HR = 24 * 60 * 60

in the script, i use a package use et_config and Et_Config_Init()
I call them inside the script like
Code:
my $min_to_add = Et_Config_Value("MIN");
my $hr_to_sub = Et_Config_Value("HR");

The issue here is, when i use those values directly in the script, it takes the multiplied value as 1 * 1 * 60 =60 but when i get them from the configuration file, it remains as 1 * 1 * 60 only as such , so i am not getting the result expected.

Is there any function that can do this?
The configuration file is mandatory. How can this be achieved?

Code:

Code:
my $date_var = "Jun  6 2011  8:02AM";
if ($date_var != '')
{
my $min_to_add = 1 * 1 * 60;
my $from_dt = qx/
  date -d "$date_var" +%s
  / + $min_to_add;
my $min_var = strftime( '%B %d %Y %I:%M%p', localtime $from_dt );
print("\n the mins added  is $min_var\n");

my $hr_to_add = 1 * 60 * 60;
my $to_dt = qx/
  date -d "$min_var" +%s
  / + $hr_to_add;
my $hr_var = strftime( '%B %d %Y %I:%M%p', localtime $to_dt );
print("\n the hours  added is $hr_var\n");
}
else
{
use POSIX qw(strftime);
my $to_dt = strftime "%b %d %Y %H:%M%p", localtime;
print("\n The original time is  $to_dt\n");
my $hr_to_sub = 1 * 1 * 86400;
my $from_dt
 = qx/
  date -d "$to_dt" +%s
  / - $hr_to_sub;
my $to_dt_now = strftime( '%B %d %Y %H:%M%p', localtime $from_dt );
print("\n the to date now  is $to_dt_now \n");
}


Last edited by radoulov; 07-29-2011 at 09:33 AM.. Reason: Please use code tags!
# 18  
Old 07-29-2011
This is what I would store in the configuration file:

Code:
MIN = 1
HR = 24

And I'll calculate the values in run-time:

Code:
my $min_to_add =  Et_Config_Value("MIN") * 60;
...

 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

[solved] Awk/shell question to parse hour minute from text

Hi, I have a quick question on parsing the hour/minute and value from a text file and remove the seconds portion. For example in the below text file: 20:26:01 95.83 20:27:01 96.06 20:28:01 95.99 20:29:01 7.11 20:30:01 5.16 20:31:01 8.27 20:32:02 9.79 20:33:01 11.27 20:34:01 7.83... (2 Replies)
Discussion started by: satishrao
2 Replies

2. Shell Programming and Scripting

How to convert 24 hour time to 12 hour timing?

Hi friends, I want to convert 24 hour timing to 12 hour please help me... my data file looks like this.. 13-Nov-2011 13:27:36 15.32044 72.68502 13-Nov-2011 12:08:31 15.31291 72.69807 16-Nov-2011 01:16:54 15.30844 72.74028 15-Nov-2011 20:09:25 15.35096 ... (13 Replies)
Discussion started by: nex_asp
13 Replies

3. Shell Programming and Scripting

add one hour to each time field

Hello All, Is there any *easy* and efficient way to add "one hour" to few fields in a file? . I have done this using a python script and it has hit with performance issues. I have around 200mi of records, which I need to modify and send across in one hour. sample input: '2012-10-17... (2 Replies)
Discussion started by: panyam
2 Replies

4. AIX

crontab 1 hour off from current time

This is a new one on me. We upgraded a system from AIX 5.3 TL 7 to 6.1 TL 7 yesterday. The app people notified us that their cron jobs weren't running at the right time. So I made a test cron entry and here's what I've found: # crontab -l * * * * * /usr/bin/date > /tmp/test.log 2>&1 # cat... (2 Replies)
Discussion started by: homeyjoe
2 Replies

5. Shell Programming and Scripting

Doing math on 24 hour time base

I'm trying to do some simple math on a 24 hour time base. The time is in the format of HM (HoursMinutes) For example: 2330 #23:30 1800 #18:00 730 #07:30 my problem is with the single-digit hours. If the time is 2200, I use this code: baseTime=2200 minutes=${baseTime:2:3}... (3 Replies)
Discussion started by: jondecker76
3 Replies

6. Shell Programming and Scripting

counting word xx referred to a time period, like minute or hour

Hello, I try to insert a post because I've got a trouble to perform a unix job. But I didn't found which steps (procedure) I should follow. Could you help me? I got a log by my Application box, like following: gbosmam037:test >view Log_Server.csv ... (2 Replies)
Discussion started by: maluca68
2 Replies

7. Shell Programming and Scripting

Crontab for every minute or every hour

How to set crontab for every minute or every hour (1 Reply)
Discussion started by: kaushik02018
1 Replies

8. AIX

Time getting reduced by 1 hour

I am setting TZ=EST5EDT,M3.2.0/02:00:00,M11.1.0/02:00:00 Then Setting the date to Mar 14 01:40 EST date 0314014010 Sun Mar 14 01:40:36 EDT 2010 Note that it show it EST. According to my TZ variable 01:40 Should be in EST only. On executing date command once again it shows date Sun Mar... (4 Replies)
Discussion started by: januuj23
4 Replies

9. Shell Programming and Scripting

Time difference in Minute in UNIX

is there any ways to get the time difference between 2 dates in UNIX? for example, For below date the outut should come 22 minutes startdate enddate ========= ======= 06/17/2008 13:25 06/17/2008 13:47 For, below date, the output should come 1462 minutes ... (5 Replies)
Discussion started by: Amit.Sagpariya
5 Replies

10. Linux

How to add and extra hour to the start time

Hi Actually what am trying to ask is , i have an shell script ,now i want to run this shell script for one hour continuously and after one hour it has to stop automatically. can any one suggest me how to automate the shell script ? we tried wth the getting the start time and add ing an hour... (8 Replies)
Discussion started by: lalitka
8 Replies
Login or Register to Ask a Question