UNIX Date Formatting


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting UNIX Date Formatting
# 1  
Old 07-22-2014
UNIX Date Formatting

Hi

I have a shell variable storing DATE in YYYY-MM-DD format
is there a way i extract required field say only DD

Also, would be great if there is a way which could take date format as well so that code is generic for any date format eg DDMMYYYY or DD/MM/YYYY or YYYY/MM/DD etc.

Thanks
# 2  
Old 07-22-2014
What have you tired to accomplish this?
# 3  
Old 07-22-2014
i could achieve doing the same with particular format using "cut" command. was thinking of getting ideas for generic one.

And why you think i didn't try anything before posting here? Can u help?
# 4  
Old 07-22-2014
We think you didn't try anything because you didn't show us that you tried anything. If you show us what you have tried, we can often point out a very minor fix that will make your code work. Why not give us a starting point instead of making us start from scratch? Why not help us help you?

What you want is easy to do it for any given date format. It is not possible to extract DD from MM/DD/YYYY and DD/MM/YYYY or MMDDYYYY and DDMMYYYY and YYYYMMDD and YYYYDDMM since there is no way to determine whether 20122001 was intended to be January 20, 2012 or December 20, 2001 or whether 20140102 was intended to be January 2, 2014 or February 1, 2014.

As long as you have a shell that performs POSIX required parameter expansions, for the formats you specified you could use:
Code:
var="YYYY-MM-DD"
dd=${var##*-}
printf 'var=%s, dd=%s, using %s\n' "$var" "$dd" 'dd=${var##*-}'
var=DDMMYYYY
dd=${var%??????}
printf 'var=%s, dd=%s, using %s\n' "$var" "$dd" 'dd=${var%??????}'
var=DD/MM/YYYY
dd=${var%%/*}
printf 'var=%s, dd=%s, using %s\n' "$var" "$dd" 'dd=${var%%/*}'
var=YYYY/MM/DD
dd=${var##*/}
printf 'var=%s, dd=%s, using %s\n' "$var" "$dd" 'dd=${var##*/}'

which prints:
Code:
var=YYYY-MM-DD, dd=DD, using dd=${var##*-}
var=DDMMYYYY, dd=DD, using dd=${var%??????}
var=DD/MM/YYYY, dd=DD, using dd=${var%%/*}
var=YYYY/MM/DD, dd=DD, using dd=${var##*/}

These 2 Users Gave Thanks to Don Cragun For This Post:
# 5  
Old 07-22-2014
Quote:
Originally Posted by skyineyes
Hi

I have a shell variable storing DATE in YYYY-MM-DD format
No, you have a variable storing a STRING that represents a date, using a string of characters that humans have learned to recognize as representative of a date.

Quote:
is there a way i extract required field say only DD

Also, would be great if there is a way which could take date format as well so that code is generic for any date format eg DDMMYYYY or DD/MM/YYYY or YYYY/MM/DD etc.

Thanks
To write a generic function, you have to be able to answer this question:

What date is represented by the string '05/04/12'?
Which characters represent the year?
Which characters represent the month?
Which characters represent the day of the month?

Whatever your answer, I can say you are wrong, because it could be just as legitimate to apply some other interpretation.
This User Gave Thanks to edstevens For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Need Date Formatting help

Hi, How can i store the date + time from the output of the ls command in loop in a variable date1? -rw-rw---- 1 user1 admin 500002 Jan 2 21:24 P002607.cssI then want to convert Jan 2 21:24 to this date format 2014-01-02 21:24:00 and save it in date2 variable. Then i would like to add... (1 Reply)
Discussion started by: mohtashims
1 Replies

2. UNIX for Dummies Questions & Answers

Formatting date time in unix using perl breaks

while read l do vTimeCreated=`perl -e '@d=localtime ((stat(shift))); printf "%02d-%02d-%04d %02d:% 02d:%02d\n", $d,$d+1,$d+1900,$d,$d,$d' ${l}` echo "${l} || ${vTimeCreated}" >> ${fPrefx}_Output_Files_${vDate}.txt done < servername.txt Using the above code to format date time for each of... (5 Replies)
Discussion started by: HeadBang
5 Replies

3. Shell Programming and Scripting

Formatting date time in unix

while read l do vTimeCreated=`perl -e '@d=localtime ((stat(shift))); printf "%02d-%02d-%04d %02d:% 02d:%02d\n", $d,$d+1,$d+1900,$d,$d,$d' ${l}` echo "${l} || ${vTimeCreated}" >> ${fPrefx}_Output_Files_${vDate}.txt done < servername.txt Using the above code to format date time for each of the... (0 Replies)
Discussion started by: HeadBang
0 Replies

4. Shell Programming and Scripting

Formatting date

Hi all Y=`date +'%Y'` M=`date +'%m'` D=`date +'%d'` if && ;then yesterday=$Y$M`expr $D + 30` echo $yesterday else if && ; then yesterday=$Y$M`expr $D + 29` echo $yesterday else if ; then yesterday=$Y$M`expr $D + 27` echo $yesterday else yesterday=$Y$M`expr $D - 1` echo... (8 Replies)
Discussion started by: ultimatix
8 Replies

5. Shell Programming and Scripting

Formatting a date

Hi, the date value retrieved by a parameter from the table is of the format dd/mm/yyyy. please let me know how to convert this to YYYYMMDD using sed thanks (4 Replies)
Discussion started by: swasid
4 Replies

6. OS X (Apple)

Date Formatting, etc.

Hi - I'm using GeekTool to customize my desktop in OS X 10.5.8 I'm a complete novice as far as UNIX commands, just know enough to be dangerous. I have a command entered as a Shell to display my events from iCal: This makes my events show something like this: While this is... (1 Reply)
Discussion started by: patricksprague
1 Replies

7. Shell Programming and Scripting

date formatting

Hi i need to have the date in the format like dd-mon-yyyy my script goes like this #!/usr/bin/bash for f in /space/can /home/lbs/current/externalcdrbackup/L_CDR_Configuration/1/200903122* ; do awk '{sum++;}END{for(i in sum) {print d,h,m,i, sum}}' "d=$(date +'%m-%d-%Y')" "h=$(date +'%H')"... (8 Replies)
Discussion started by: aemunathan
8 Replies

8. UNIX for Dummies Questions & Answers

Date formatting

Running bash how do I input the date in the command line like 3/20/90 and get an output formmated like March, 20 1990. (8 Replies)
Discussion started by: knc9233
8 Replies

9. Shell Programming and Scripting

date formatting

Date format MM/DD/YYYY required is YYYYMMDD, I tried using sed but could not get it any help please. (4 Replies)
Discussion started by: mgirinath
4 Replies

10. Shell Programming and Scripting

Formatting date

i need date in the following format December 14, 2005. With date +"%b %d, %Y" command i am getting the following output :- Dec 14, 2005. can anyone pls tell me how to get the full month name (2 Replies)
Discussion started by: radhika03
2 Replies
Login or Register to Ask a Question