Convert Date Format


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Convert Date Format
# 1  
Old 11-27-2013
Convert Date Format

Hello,
I want to change the format of date value in variable.

e.g. cur_date = '2013/03/13 14:24:50' (yyyy/mm/dd hh24:mi:ss)

I want to change this to '13-MAR-2013 14:24:50

Following code coverts the current date to format I am looking for. But I do not know how this can be done for a date in different format that is stored in a variable.

Code:
date +'%d-%b-%Y %H:%M:%S' -d "$year$month$day $hour:$min:$sec"

# 2  
Old 11-27-2013
Quote:
Originally Posted by cartrider
Hello,
I want to change the format of date value in variable.

e.g. cur_date = '2013/03/13 14:24:50' (yyyy/mm/dd hh24:mi:ss)

I want to change this to '13-MAR-2013 14:24:50

Following code coverts the current date to format I am looking for. But I do not know how this can be done for a date in different format that is stored in a variable.

Code:
date +'%d-%b-%Y %H:%M:%S' -d "$year$month$day $hour:$min:$sec"

Try:
Code:
date +'%d-%b-%Y %H:%M:%S' -d "$curdate"

# 3  
Old 11-27-2013
Code:
$ cur_date='2013/03/13 14:24:50'
$ date -d "$cur_date" +'%d-%b-%Y %T'
13-Mar-2013 14:24:50

# 4  
Old 11-27-2013
I am not getting the expected output of 13-MAR-2013 14:24:50

Code:
elise->DEV> echo $curr_date
2013/03/13 14:24:50
elise->DEV> date +'%d-%b-%Y %H:%M:%S' -d "$curr_date"
27-Nov-2013 16:17:27
elise->DEV> date -d "$curr_date" +'%d-%b-%Y %T'clear
date: illegal option -- d
usage:  date [-u] mmddHHMM[[cc]yy][.SS]
        date [-u] [+format]
        date -a [-]sss[.fff]
elise->DEV>

# 5  
Old 11-27-2013
You need GNU date to use the -d option of date.

If you system doesn't have that available you may need to use a perl program like this:

Code:
#! /usr/bin/env perl
use Time::Local;
use POSIX qw(strftime);

my ($yyyy, $mm, $dd, $hh, $min, $ss) = split(/[:\/ ]/, $ARGV[0]);
print strftime("%d-%b-%Y %T\n", localtime(timelocal($ss,$min,$hh,$dd,$mm-1,$yyyy)));

Save as format_date.pl and run it like this:

Code:
$ cur_date='2013/03/13 14:24:50'
$ ./format_date.pl "$cur_date"
13-Mar-2013 14:24:50

# 6  
Old 11-27-2013
With a recent (1993 or later) Korn shell or bash, you could also use:
Code:
#!/bin/ksh
cur_date="${1:-2013/03/13 13:24:50}"
printf "Processing date: %s\n" "$cur_date"
amn="JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC"
y=${cur_date%%/*}
m=${cur_date:5:2}
dm=${m#0}
d=${cur_date:8:2}
t=${cur_date#* }
printf "%s-%s-%s %s\n" "$d" "${amn:$(((dm-1)*3)):3}" "$y" "$t"

If you name this script tester and invoke it without arguments, you'll get:
Code:
Processing date: 2013/03/13 13:24:50
13-MAR-2013 13:24:50

If you invoke it with an operand, for example:
Code:
tester "2013/09/22 12:34:56"

you'll get:
Code:
Processing date: 2013/09/22 12:34:56
22-SEP-2013 12:34:56

# 7  
Old 11-27-2013
You could also use an array for the months but initialiser code is different for ksh and bash, which should work on older versions that don't support the substring expansion stuff.

I still like the perl solution as it gives you flexibility to user other date % formatters.

Code:
#!/bin/ksh
cur_date="${1:-2013/03/13 13:24:50}"
printf "Processing date: %s\n" "$cur_date"
set -A amn JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC
IFS='/ '
set -- $cur_date
printf "%s-%s-%s %s\n" "$3" "${amn[10#$2-1]}" "$1" "$4"

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Convert date format

Hi guys I am looking to convert this kind of entry in a txt file 26/04/2008 to April 2008 Note : this is not using the date command , these are date entries in a file can i do this with sed ? Use code tags, thanks. (5 Replies)
Discussion started by: johnnybananas
5 Replies

2. Shell Programming and Scripting

Convert string into date format

Hi, I am getting the below string as a input for date. 12/03/2013 11:02 AM I want to change this date as 03-DEC-2013 11:02 AM. Could you please help on this. Thanks Chelladurai (4 Replies)
Discussion started by: ckchelladurai
4 Replies

3. Shell Programming and Scripting

awk convert date format

Could you tell me how to convert the following dates? If I have m/d/yyyy, I want to have 0m/0d/yyyy. I want my dates to always be 8 digits. In other words, I want a 0 inserted whenever the month or day is a single digit. My issue is first I need to use FS="," to get field $4 for the... (7 Replies)
Discussion started by: wbrunc
7 Replies

4. Shell Programming and Scripting

Convert any date format into yyyy/mm/dd

How can I convert any user inputted date into yyyy/mm/dd ? For example user can input date one of the following 20120121 , 2012-01-21 ,01/21/2012,01/21/2012 etc But I need to convert any of the date entered by user into yyyy/mm/dd (2012/01/2012). Any suggestion. Thanks in advance this is... (1 Reply)
Discussion started by: ZeroHedge
1 Replies

5. Shell Programming and Scripting

convert date format

I've been using this thread: https://www.unix.com/shell-programming-scripting/58675-change-date-dd-mmm-yyyy-mm-dd-yyyy.html and https://www.unix.com/shell-programming-scripting/14655-changing-yyyy-mm-dd-ddmmyy.html and this code: on this format: 05/16/2008 18:30:49 Installation 48985and I'm... (3 Replies)
Discussion started by: dba_frog
3 Replies

6. Shell Programming and Scripting

Convert date to Unix format

Dear Expert How to convert date in format of YYYY-MM-DD HH:MM:SS to unix format using a script or command if avaliable Example "2011-05-15 18:00:00" is converted to 1330970400 I tried to use option d in date command but no use, Im using solaris 10 Thanks a lot (12 Replies)
Discussion started by: yahyaaa
12 Replies

7. Shell Programming and Scripting

convert date format to mysql date format in log file

I have a comma delimited log file which has the date as MM/DD/YY in the 2nd column, and HH:MM:SS in the 3rd column. I need to change the date format to YYYY-MM-DD and merge it with the the time HH:MM:SS. How will I got about this? Sample input 02/27/09,23:52:31 02/27/09,23:52:52... (3 Replies)
Discussion started by: hazno
3 Replies

8. Shell Programming and Scripting

Convert Epoch time format to normal date time format in the same file

I have a file named "suspected" with series of line like these : {'protocol': 17, 'service': 'BitTorrent KRPC', 'server': '219.78.120.166', 'client_port': 52044, 'client': '10.64.68.44', 'server_port': 8291, 'time': 1226506312L, 'serverhostname': ''} {'protocol': 17, 'service': 'BitTorrent... (3 Replies)
Discussion started by: rk4k
3 Replies

9. UNIX for Dummies Questions & Answers

Convert date format

Hi All, Need your help in converting a date format in ksh. I'm currently working on SUN os where my script is getting a date from a table. The result returns to ksh in this format: 17-JUL-08 How do i convert this string to a date format like yyyymmdd? I tried #!/bin/ksh d="17-JUL-08"... (5 Replies)
Discussion started by: agathaeleanor
5 Replies

10. Shell Programming and Scripting

convert mmddyy date format to ccyyddd format??

hi, for reading a cobol indexed file i need to convert "mmddyy" date format to "ccyyddd" format. i checked the datecalc and other scripts but couldnt modify them to cater to my need:(... The datecalc gives an output which i believe is the total days till that date, but i want to convert it... (2 Replies)
Discussion started by: Bhups
2 Replies
Login or Register to Ask a Question