Question on time and date formating..

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

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

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

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

those who know please do favour for me...

Everyone at the UNIX and Linux Forums gives their best effort to reply to all questions in a timely manner. For this reason, posting questions with subjects like "Urgent!" or "Emergency" and demanding a fast reply are not permitted in the regular forums.

For members who want a higher visibility to their questions, we suggest you post in the Emergency UNIX and Linux Support Forum. This forum is given a higher priority than our regular forums.

Posting a new question in the Emergency UNIX and Linux Support Forum requires forum Bits. We monitor this forum to help people with emergencies, but we do not not guarantee response time or best answers. However, we will treat your post with a higher priority and give our best efforts to help you.

If you have posted a question in the regular forum with a subject "Urgent" "Emergency" or similar idea, we will, more-than-likely, close your thread and post this reply, redirecting you to the proper forum.

Of course, you can always post a descriptive subject text, remove words like "Urgent" etc. (from your subject and post) and post in the regular forums at any time.

Thank you.

The UNIX and Linux Forums

Thank god for the date command. This is how I would attack this...

date -d "03/16/1970" '+%d-%b-%Y %H:%M:%S'
16-Mar-1970 00:00:00

date -d "March 16 1970" '+%d-%b-%Y %H:%M:%S'
16-Mar-1970 00:00:00

date -d "16-Mar-70" '+%d-%b-%Y %H:%M:%S'
16-Mar-1970 00:00:00

Use the above code and test each possible time/date format in the date command. If the field is not natively understood by date, change the text..

For example, the following case is unsupported:

date -d "03-16-1970" '+%d-%b-%Y %H:%M:%S'
date: invalid date `03-16-1970'

so I would do the following with it...

my_var=`echo 03-16-1970 | sed 's/-/\//g'
echo $my_var
03/16/1970
date -d $my_var '+%d-%b-%Y %H:%M:%S'
16-Mar-1970 00:00:00

Put $100 in my paypal account and I'll write it for you :wink:

Are these ALL of the possible timestamp formats that can occur in the first column of your file?:

-- 12 hour
DD-MON-YEAR   25-Jul-1979 03:00:00 AM
MON-DAY-YEAR  Feb-08-1988 12:05:00 PM
YEAR-MON-DAY  1988-Feb-08 12:05:00 PM
DD/MON/YEAR   25/1/1979 06:00:00 AM
MON/DAY/YEAR  7/19/1979 06:00:00 PM
YEAR/MON/DAY  1979/7/19 06:00:00 PM

-- 24 hour
DD-MON-YEAR   25-Jul-1979 03:00
MON-DAY-YEAR  Feb-08-1988 12:05
YEAR-MON-DAY  1988-Feb-08 12:05
DD/MON/YEAR   25/1/1979 06:00
MON/DAY/YEAR  7/19/1979 18:00
YEAR/MON/DAY  1979/7/19 18:00

Freeform dates are a disaster in data processing. This problem is a good example.

given this sample:

  
  25/1/1979 06:00:00 AM
  7/19/1979 06:00:00 PM

So dd/mm and mm/dd are both possible.

This date now becomes undecidable:

4/7/1979 06:00:00 PM

It is either April 7 or July 4.

So unless there is a way to remove undecidable dates, you cannot reliably process your data. So, this whole problem cannot be decided as stated. Which is why the answers you have gotten are not much help. My specialty is calendrics - and I do not know of a solution. It requires intelligent human intervention to look at other data that is related to the problem dates lines of data and hopefully figure it out.

1. do not let that happen again in the future, constrain date entry to a known format.
2. find somebody in your company who knows a lot about the data, let them decide.
Or guess.