How to convert 24 hour time to 12 hour timing?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to convert 24 hour time to 12 hour timing?
# 1  
Old 01-29-2013
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..
Code:
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    72.69842
16-Nov-2011    04:02:32    15.30826    72.65642
27-Nov-2011    13:08:25    15.48236    73.61669
13-Nov-2011    16:35:04    15.31626    72.68628
13-Nov-2011    15:17:47    15.31361    72.69728

I need output like this
Code:
27-Nov-2011 1:08:25 PM

# 2  
Old 01-29-2013
Code:
awk ' {
 split($2,A,":");
 if(A[1]>12) {
  V=sprintf("%02d",A[1]-12);
  sub(/[0-9]+:/,V":",$2);
  $2=$2" PM";
 }
 else if(A[1]==12)
  $2=$2" PM";
 else if(A[1]==0) {
  sub(/[0-9]+:/,"12:",$2);
  $2=$2" AM"
 }
 else
  $2=$2" AM";
}1' OFS='\t' filename


Last edited by Yoda; 01-29-2013 at 02:15 AM.. Reason: Added check for 00 hours
This User Gave Thanks to Yoda For This Post:
# 3  
Old 01-29-2013
Try sth like this..

Code:
 
awk -F ":| +" '{if($2>12){t=sprintf("%02d", $2-12);print $1,t":"$3":"$4,"PM"}else{print $1,$2":"$3":"$4,"AM"}}' file

This User Gave Thanks to pamu For This Post:
# 4  
Old 01-29-2013
The above suggestions don't strip off input fields 3 and 4. If you want something matching the output you said you want, try something like:
Code:
awk '{  split($2, df, /:/)
        $2 = sprintf("%d:%02d:%02d %sM",
                df[1] > 12 ? df[1] - 12 : df[1] ? df[1] : 12,
                df[2], df[3], df[1] >= 12 ? "P" : "A")
        print $1, $2
}' file

I misread Pamu's suggested script. It does strip off the last two input columns, but produces zero-filled hours where the requested output didn't have space or zero fill for hours less than 10.

Last edited by Don Cragun; 01-29-2013 at 02:20 AM.. Reason: Misread Pamu's posting
This User Gave Thanks to Don Cragun For This Post:
# 5  
Old 01-29-2013
Code:
awk 'split($2,t,":") {if (t[1]>12) {print $1,t[1]-12":"t[2]":"t[3]" PM",$3,$4} else {print $1,t[1]+0":"t[2]":"t[3]" AM",$3,$4}}' file
13-Nov-2011 1:27:36 PM 15.32044 72.68502
13-Nov-2011 12:08:31 AM 15.31291 72.69807
16-Nov-2011 1:16:54 AM 15.30844 72.74028
15-Nov-2011 8:09:25 PM 15.35096 72.69842
16-Nov-2011 4:02:32 AM 15.30826 72.65642
27-Nov-2011 1:08:25 PM 15.48236 73.61669
13-Nov-2011 4:35:04 PM 15.31626 72.68628
13-Nov-2011 3:17:47 PM 15.31361 72.69728

This User Gave Thanks to Jotne For This Post:
# 6  
Old 01-29-2013
Thank you so much...all of you.
# 7  
Old 01-29-2013
Quote:
Originally Posted by Jotne
Code:
awk 'split($2,t,":") {if (t[1]>12) {print $1,t[1]-12":"t[2]":"t[3]" PM",$3,$4} else {print $1,t[1]+0":"t[2]":"t[3]" AM",$3,$4}}' file
13-Nov-2011 1:27:36 PM 15.32044 72.68502
13-Nov-2011 12:08:31 AM 15.31291 72.69807
16-Nov-2011 1:16:54 AM 15.30844 72.74028
15-Nov-2011 8:09:25 PM 15.35096 72.69842
16-Nov-2011 4:02:32 AM 15.30826 72.65642
27-Nov-2011 1:08:25 PM 15.48236 73.61669
13-Nov-2011 4:35:04 PM 15.31626 72.68628
13-Nov-2011 3:17:47 PM 15.31361 72.69728

Hi Jotne:
Although a timestamp between midnight and 1am doesn't appear in the sample input, I assumed that any 24 hour input time was possible.

Your script will print 0:mm:ss AM rather than 12:mm:ss AM for such cases. And your script prints 12:mm:ss AM rather than 12:mm:ss PM for times between noon and 1pm.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Windows & DOS: Issues & Discussions

NFS Share Time an Hour Ahead

Time on unix server shows 8:00a CST Time on Windows 7 Box shows 8:00a CST However when you access an NFS share the time stamp on the files show an hour ahead? Talking about a newly created file shows an hour ahead so at 8:00a the file will show a time stamp of 9:00a CST the problem it... (1 Reply)
Discussion started by: Paul Standley
1 Replies

2. 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

3. 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

4. Shell Programming and Scripting

Incrementing a time by one hour issues

Hi all, I need your help to increment a time by one hour. The difficulty is the time is in a string format and not a value cat file | awk '{print $1,$2}' 09/02/2011 20:11 09/03/2011 20:11 I want to change the time to be as follows 09/02/2011 21:11 or even 09/02/2011 20:21 Can... (2 Replies)
Discussion started by: Junes
2 Replies

5. UNIX for Dummies Questions & Answers

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

Hi, The timestamp is June 06 2011 11:05AM i need 2 results. first, an hour added to it, June 06 2011 12:05AM second, a minute added to it, June 06 2011 11:06AM How can i do this? Also when it reaches 12:59, it needs to start from 1 again without giving the output as 13:00. it... (17 Replies)
Discussion started by: irudayaraj
17 Replies

6. 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

7. Shell Programming and Scripting

Perl - Extract 12 hour time, convert to 24 and subtract 15 minutes?

OK, I am by no means a programmer... I have been given the task to do some automation scripts. I have got most of it working from snippets I have found on the Web. One requirement has me stumped. The initial timing file created by the user is a comma delimited in the following format.... (4 Replies)
Discussion started by: autotuner
4 Replies

8. UNIX for Dummies Questions & Answers

How do i set time in 24 hour format?

Currently whenever i run date command output is shown like Mon Apr 12 05:17:21 IST 2010 When its 17:17 Here. How would i change it so that it should show. Mon Apr 12 17:17:21 IST 2010 (8 Replies)
Discussion started by: pinga123
8 Replies

9. 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

10. Shell Programming and Scripting

getting hour minus the current time

Can some one help me getting last hour of the current time with date command in a script. (7 Replies)
Discussion started by: shehzad_m
7 Replies
Login or Register to Ask a Question