DATE TIME formatting

 
Thread Tools Search this Thread
Homework and Emergencies Emergency UNIX and Linux Support DATE TIME formatting
# 1  
Old 01-11-2013
DATE TIME formatting

can anyone one help me....to make date and time format...to following format for my file


Code:
Code:
DATE                           TIME DD- MON- YEAR         24 Hours

I have a need of format like this

12-Jan-2012 in one column, then time in 24 Hours in another column....please help...me...

currently we are upgrading our database....kindly help to make standard format...

our database containing format like this


Code:
Code:
DD-MON-YEAR MON-DAY-YEAR YEAR-MON-DAY DD/MON/YEAR MON/DAY/YEAR YEAR/MON/DAY

some files containing month name, some number...

Code:
and time format
both 12 and 24 hours are mixed

script has to read current format of date and time and then write to new file with standard format

Awaiting for help...

here is my data

Code:
DATE,PR,ST,ONC,NOD
7/19/1979 18:00,748,1,43,1
7/19/1979 18:00,748,1,43,1
7/19/1979 18:00,748,1,43,1
7/19/1979 18:00,748,1,43,1
7/19/1979 18:00,748,1,43,1
7/19/1979 18:00,748,1,43,1
7/19/1979 06:00:00 AM,748,1,43,1
25/1/1979 06:00:00 AM,748,1,43,1
20/1/1979 06:00:00 AM,748,1,43,1
31/9/1979 06:00:00 AM,748,1,43,1
20/1/1979 06:00:00 AM,748,1,43,1
31/9/1979 06:00:00 AM,748,1,43,1
25-Jul-1979 03:00:00 AM,748,1,43,1
25-Jul-1979 03:00:00 AM,748,1,43,1
25-Jul-1979 03:00:00 AM,748,1,43,1
25-Jul-1979 03:00:00 AM,748,1,43,1
25-Jul-1979 03:00:00 AM,748,1,43,1
25-Jul-1979 03:00:00 AM,748,1,43,1
25-Jul-1979 03:00:00 AM,748,1,43,1
25-Jul-1979 03:00:00 AM,748,1,43,1
25-Jul-1979 03:00:00 AM,748,1,43,1
25-Jul-1979 03:00:00 AM,748,1,43,1
25-Jul-1979 03:00:00 AM,748,1,43,1
25-Jul-1979 03:00:00 AM,749,2,44,2
25-Jul-1979 03:00:00 AM,750,3,45,3
Feb-08-1988 12:05:00 PM,751,4,46,4
Feb-08-1988 12:05:00 PM,752,5,47,5
08-Feb-1988 18:00,753,6,48,6
08-Feb-1988 18:00,754,7,49,7
25-1-1979 06:00:00 AM,748,1,43,1
20-1-1979 06:00:00 AM,748,1,43,1
1-15-1979 06:00:00 AM,748,1,43,1
2-19-1979 06:00:00 AM,748,1,43,1

those who know please do favour for me...

Last edited by nex_asp; 01-11-2013 at 10:28 AM.. Reason: code tag
# 2  
Old 01-11-2013
Maybe mentionning your OS and version would help you know...
# 3  
Old 01-11-2013
Becasue some OS verion have special functionality in the date command.
# 4  
Old 01-11-2013
Ubuntu 12.04 LTS 64 bit. I am using, database is in windows xp os, I have planned extract data from windows pc, and then modify date and time format as I mentioned
# 5  
Old 01-11-2013
To show what Jim ( and I ) were taliking about :
Code:
onas:/home/vbe $ date --d="25-Jul-1979 03:00:00 AM"  # Extracted from your data, just for fun...
Wed Jul 25 03:00:00 CET 1979
onas:/home/vbe $ date --d="25-Jul-1979 03:00:00 PM"   # and modified to PM to se...
Wed Jul 25 15:00:00 CET 1979
onas:/home/vbe $ uname -r
2.6.32.24
onas:/home/vbe $

This system is an debian I think...

So I would start by reading the man pages of date on your system to see what it can do...
# 6  
Old 01-17-2013
try something like this..as your format is changing so handle the different condition...for thounsand or records you can redirect the failing records to error file...below is the same code for your reference ....date --d="$i" +%d-%b-%Y

Code:
/bea/mani >cat dateformat.sh
IFS="
"
for i in `cat problem.txt| awk -F"," '{print $1}'`
do
echo $i;
if [[ "$i" == */* ]]
then
echo "String contains /"
dt=`echo $i | awk -F"\/" '{print $1}'`
if [ $dt -gt 12 ]
then
echo "Not a month"
mn=`echo $i | awk -F"\/" '{print $2}'`
i=`echo $i|sed "s/"${dt}\/${mn}"/"${mn}\/${dt}"/"`
echo $i
fi
fi
if [[ "$i" == *-* ]]
then
echo "Contains -"
dt=`echo $i | awk -F"\/" '{print $1}'`
if [ $dt -gt 12 ]
then
echo "Not a month"
mn=`echo $i | awk -F"\/" '{print $2}'`
i=`echo $i|sed "s/"${dt}\/${mn}"/"${mn}\/${dt}"/"`
echo $i
fi
fi
date --d="$i" +%d-%b-%Y
read;
done
/bea/mani >

# 7  
Old 01-17-2013
This is not only not easy, but some records will be impossible to translate, be it manually or by program logic - those using two numbers below 13 for day and month in an undefined order. These will be printed to an error file. For the rest, and if your awk versions allows for it, try:
Code:
$ awk  'BEGIN {split("Jan Feb Mar Apr May Jun Jul AUg Sep Oct Nov Dec", months)}
         NR==1 {print;next}
         {n=split ($1,Dt,"[-/ :]")                                            # split all date/time info into up to 7 array elements
          if (!(Dt[1]+0))                     {Mon=Dt[1]; Day=Dt[2]}          # check if there's an alpha month's name; use it, the other element is the day
            else if (!(Dt[2]+0))              {Mon=Dt[2]; Day=Dt[1]}
                   else if (Dt[1]>12)         {Mon=months[Dt[2]]; Day=Dt[1]}  # check if there's one element greater than 12 - must be a day; use it, the other is a month
                          else if (Dt[2]>12)  {Mon=months[Dt[1]]; Day=Dt[2]}
                                 else         {print > "errorfile";next}      # all other records cannot be correctly translated

          if (Dt[7]=="PM") Dt[4]+=12                                          # handling PM may need to be refined
         
          print Day"-"Mon"-"Dt[3], Dt[4]":"Dt[5]":" sprintf ("%02d",Dt[6]+0), $2, $3, $4,$5
         }
         
        ' FS="," file
DATE,PR,ST,ONC,NOD
19-Jul-1979 18:00:00 748 1 43 1
25-Jan-1979 06:00:00 748 1 43 1
20-Jan-1979 06:00:00 748 1 43 1
31-Sep-1979 06:00:00 748 1 43 1
20-Jan-1979 06:00:00 748 1 43 1
31-Sep-1979 06:00:00 748 1 43 1
25-Jul-1979 03:00:00 748 1 43 1

The AM/PM logics may need some refinement, as does the output of the time fields in general. Regard this as an exercise for yourself...

Last edited by RudiC; 01-17-2013 at 04:24 AM..
This User Gave Thanks to RudiC 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