Converting date DD MM YYYY to DD MON YYYY

Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Converting date DD MM YYYY to DD MON YYYY
# 1  
Old 04-05-2011
Converting date DD MM YYYY to DD MON YYYY


I am writing a script that parses different logs and produces one. In the source files, the date is in DD MM YYYY HH24:MI:SS format. In the output, it should be in DD MON YYY HH24:MI:SS (ie 25 Jan 2010 16:10:10)
To extract the dates, I am using shell substrings, i.e.:

read line
echo "$year$month$day$hour$min$sec" # prints something like 20110325161610 (I use this numeric value to compare it agains reference date, i.e. date when this script ran last time)
if [ "$year$month$day$hour$min$sec" -gt "$lastlog" ]
  # output date in DD MON FORMAT... how?

Of course I can do a routine like: if mon = 01 then mon = 'JAN', if mon = 02 then mon = 'FEB'... But I guess there must be a nicer solution to this. Maybe solution that will take into account also LANG setting (not a requirement, but would like to have it).

Maybe date function can be used for that, but I did not figure out how to pass the -d parameter (what format should it be in?). Did not find much in FAQ: Date Arithmetics either Smilie
# 2  
Old 04-05-2011
You can give this a try:
MON=$(echo "$month" | awk '
  split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec", month, " ")
  for (i=1; i<=12; i++) mdigit[month[i]]=i
  print month[$0]

Oops, haven't read the last line of the 1st post..(-d option). Anyway this could be helpful for users of the date function without the -d option.

Last edited by Franklin52; 04-05-2011 at 03:04 PM..
# 3  
Old 04-05-2011
Try this:
date +'%d %b %Y %H:%M:%S' -d "$year$month$day $hour:$min:$sec"

# 4  
Old 04-05-2011
Dahu: thank you, that was helpful.

Is there a way to do it the other way round as well? That means from i.e. 26 Mar 2011 get 20110326?

Tried the following, but not much success. Does date really only accept date in YYYYMMDD format?
date +'%d %m %Y %H:%M:%S' -d "2011Mar26"
date +'%d %m %Y %H:%M:%S' -d "26 Mar 2011"

Last edited by Scott; 04-05-2011 at 02:38 PM..
# 5  
Old 04-05-2011
the 2nd attempt looks OK, except your format is wrong, All these worked for me:
date -d "26 Mar 2011" +'%Y%m%d' 
date -d "Mar 26 2011" +'%Y%m%d' 
date -d "Mar-26-2011" +'%Y%m%d' 
date -d "26-Mar-2011 00:00" +'%Y%m%d'

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Date format YYYY/MM/DD to DD/MM/YYYY

I am getting output of YYYY-MM-DD and want to change this to DD/MM/YYYY. When am running the query in 'Todd' to_date(column_name,'DD/MM/YYYY') am getting the required o/p of DD/MM/YYYY, But when am executing the same query(Netezza) in linux server(bash) am getting the output of YYYY-MM-DD file... (3 Replies)
Discussion started by: Roozo
3 Replies

2. UNIX for Dummies Questions & Answers

Epoch date to YYYY/MM/DD or MM/DD/YYYY

I've seen a lot of posts on this and have tried the following: echo 1257000000| perl -e '($d,$m,$y)=(localtime(time-86400));$m+=1;$y+=1900;printf "$y/$m/$d\n";' But I am unable to convert a past Epoch date into a format such as YYYY/MM/DD or MM/DD/YYYY. I am using bash and don't know... (4 Replies)
Discussion started by: newbie2010
4 Replies

3. Shell Programming and Scripting

Date conversion help from dd/mm/yyyy to dd/Mon/yyyy i.e. 28/10/2012 to 28/Oct/2012

Hi I have a problem with Date format in my code. 1st I am trying to convert today's date to yesterday's using YESTERDAY3=`perl -e '@y=localtime(time()-86400); printf "%04d/%02d/%02d",$y+1900,$y+1,$y;$y;'` And once it is done I am trying to using the yesterday date in a grep command to... (3 Replies)
Discussion started by: nithinankam
3 Replies

4. Shell Programming and Scripting

Converting Date from YYYYMMDD to DD-MON-YYYY

Hi , I need to convert date from YYYYMMDD to DD-MON-YYYY e.g 20111214 to 14-Dec-2011 Please help. (17 Replies)
Discussion started by: ady_koolz
17 Replies

5. Shell Programming and Scripting

change date format from yyyy/mm/dd to dd/mm/yyyy

(Attention: Green PHP newbie !) I have an online inquiry form, delivering a date in the form yyyy/mm/dd to my feedback form. If the content passes several checks, the form sends an e-mail to me. All works fine. I just would like to receive the date in the form dd/mm/yyyy. I tried with some code,... (6 Replies)
Discussion started by: keyboarder
6 Replies

6. Shell Programming and Scripting

PERL String to Date (Custom format yyyymmdd to dd-mon-yyyy)

Hi All, I am learning PERL for one of the projects, and in one of these scripts, I read a flat text file and print in the terminal. The problem is, the text file has a date field. The format is yyyymmdd. I need to display this as dd-mon-yyyy. Any ideas to do this? Thanks a lot for the... (9 Replies)
Discussion started by: guruparan18
9 Replies

7. Shell Programming and Scripting

Sed: zero-padding dates (or: convert d/m/yyyy to dd/mm/yyyy)

Hi all I have some pipe-separated data in the form: 5/12/2008 00:00:00|31/1/2009 00:00:00|SOMESTUFF|OTHERSTUFF 12/31/2008 00:00:00|15/1/2009 00:00:00|MORESTUFF|REMAININGSTUFF 1/1/1023 00:00:00|16/5/2047 00:00:00|THEREST|YETMORE I need to zero-pad the single-digit days and months, using... (3 Replies)
Discussion started by: jgrogan
3 Replies

8. Shell Programming and Scripting


I have a file which has 100k+ records like this abc,05-JUN-1974,def,lkj,aaa def,11-SEP-1975,ghj,dis,dea I want to convert ex 05-JUN-1974 to 06/05/1974 Please help me with awk script to convert the whole file into MM-DD-YYYY Thank you! (2 Replies)
Discussion started by: nuthalapati
2 Replies

9. Shell Programming and Scripting

converting the date field from dd/mm/yyyy to yyyy/mm/dd

How to convert the date field from dd/mm/yyyy to yyyy/mm/dd in unix my script will generate text file which have two fields one is date and another is name of the server for example this is sample date which I have to sort based on older to newer date the problem is when I found out sort will... (4 Replies)
Discussion started by: pareshan
4 Replies

10. Shell Programming and Scripting

Change Date from dd-mmm-yyyy to mm/dd/yyyy

I want to change a date from format dd-mmm-yyyy to mm/dd/yyyy. Is there a way to do this with sed or do you have to write a case statement to convert JAN to 01? Thanks (9 Replies)
Discussion started by: stringzz
9 Replies
Login or Register to Ask a Question

Featured Tech Videos