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?
# 8  
Old 07-25-2011
I am curious as to where people found the strftime function in Perl?
Code:
perl -e 'print strftime("%B %d %Y %H:%M%p", localtime(time)), "\n"'
Undefined subroutine &main::strftime called at -e line 1.

A sample solution with DateTime
Code:
echo "June 06 2011 11:05AM" |perl -MDateTime -e '
my %months=(January=>1,Febuary=>2,March=>3,April=>4,May=>5,June=>6,July=>7,August=>8,September=>9,October=>10,November=>11,December=>12);
chomp(my $start_date=<STDIN>);
print "Start date is $start_date \n";
my @date=split/ /,$start_date;
my($hour,$min,$mod)=$date[3]=~/(\d+):(\d+)([AP]M)/;
$hour+=12 if($mod eq "PM");
my $dt=DateTime->new(year=>$date[2],month=>$months{$date[0]},day=>$date[1],hour=>$hour,minute=>$min);
my $plus_hour = DateTime->from_epoch( epoch => $dt->epoch() + (60 * 60) );
printf ("%s plus one hour is %s\n",$start_date, format_time($plus_hour));
$plus_minute=DateTime->from_epoch( epoch => $dt->epoch() + (60) );
printf ("%s plus one minute is %s\n",$start_date, format_time($plus_minute));
sub format_time{
   my $time=shift; 
   return sprintf("%s  %0.2d %d %0.2d:%0.2d%s", $time->month_name, $time->mday(),$time->year,$time->hour_12(),$time->minute,$time->am_or_pm());
}'
Start date is June 06 2011 11:05AM 
June 06 2011 11:05AM plus one hour is June  06 2011 12:05PM
June 06 2011 11:05AM plus one minute is June  06 2011 11:06AM

# 9  
Old 07-25-2011
Quote:
Originally Posted by Skrynesaver
I am curious as to where people found the strftime function?
Code:
perl -e 'print strftime("%B %d %Y %H:%M%p", localtime(time)), "\n"'
Undefined subroutine &main::strftime called at -e line 1.

[...]

In the standard module POSIX.
This User Gave Thanks to radoulov For This Post:
# 10  
Old 07-25-2011
Thanks all of you.

Changing %H to %I works fine.
will it change 'AM' and 'PM' correctly or someother option should be used in addition to %p?
is %p compulsory in this case?
# 11  
Old 07-25-2011
Quote:
Originally Posted by radoulov
In the standard module POSIX.
Ohh, interesting module, lots of reading on my horizon, thanks
# 12  
Old 07-25-2011
Quote:
Originally Posted by irudayaraj
Thanks all of you.

Changing %H to %I works fine.
will it change 'AM' and 'PM' correctly or someother option should be used in addition to %p?
is %p compulsory in this case?
It should handle AM/PM correctly. Try it and let us know.
This User Gave Thanks to radoulov For This Post:
# 13  
Old 07-25-2011
Thanks. Its working fine.
I have

my 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");
}


When am executing this as a whole, the if condition does the opposite.

when $date_var != '' then it goes to the else part,
when $date_var == '' then it does the if loop part which is not supposed to be.

why is this so?

Last edited by radoulov; 07-25-2011 at 11:44 AM.. Reason: Code tags.
# 14  
Old 07-25-2011
You need:

Code:
$date_var ne ''

instead of:

Code:
$date_var != ''

Change all the %H in %I in order to provide valid dates to the date command.
This User Gave Thanks to radoulov For This Post:
 
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