Date format

In working with date fields in Php/MySql - the format for date storage is YYYY-MM-DD. Are there any functions to convert this format to MM-DD-YYYY when displaying the date in an html form, but convert it back to YYYY-MM-DD before writing to the database.
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.


Try this.

$now = Date('Y-m-d');

And this

$then = Date('m-d-Y',$now);

to switch it back.

j_kAuthor Commented:
Date('m-d-Y',$now); always returns 12-31-1969 regardless of $now's value.  I hope it is a simple fix!

i pasted some reference from a manual of php3, hope it is useful to u

date -- format a local time/date

string date(string format, int [timestamp] );

Returns a string formatted according to the given format string using the given timestamp or the current local time if no timestamp is given.

The following characters are recognized in the format string:

a - "am" or "pm"

A - "AM" or "PM"

d - day of the month, 2 digits with leading zeros; i.e. "01" to "31"

D - day of the week, textual, 3 letters; i.e. "Fri"

F - month, textual, long; i.e. "January"

h - hour, 12-hour format; i.e. "01" to "12"

H - hour, 24-hour format; i.e. "00" to "23"

g - hour, 12-hour format without leading zeros; i.e. "1" to "12"

G - hour, 24-hour format without leading zeros; i.e. "0" to "23"

i - minutes; i.e. "00" to "59"

j - day of the month without leading zeros; i.e. "1" to "31"

l (lowercase 'L') - day of the week, textual, long; i.e. "Friday"

L - boolean for whether it is a leap year; i.e. "0" or "1"

m - month; i.e. "01" to "12"

n - month without leading zeros; i.e. "1" to "12"

M - month, textual, 3 letters; i.e. "Jan"

s - seconds; i.e. "00" to "59"

S - English ordinal suffix, textual, 2 characters; i.e. "th", "nd"

t - number of days in the given month; i.e. "28" to "31"

U - seconds since the epoch

w - day of the week, numeric, i.e. "0" (Sunday) to "6" (Saturday)

Y - year, 4 digits; i.e. "1999"

y - year, 2 digits; i.e. "99"

z - day of the year; i.e. "0" to "365"

Z - timezone offset in seconds (i.e. "-43200" to "43200")

Unrecognized characters in the format string will be printed as-is. The "Z" format will always return "0" when using gmdate()(). Example 1. date() example

print (date("l dS of F Y h:i:s A"));
print ("July 1, 2000 is on a " . date("l", mktime(0,0,0,7,1,2000)));

It is possible to use date() and mktime() together to find dates in the future or the past. Example 2. date() and mktime() example

$tomorrow  = mktime(0,0,0,date("m")  ,date("d")+1,date("Y"));
$lastmonth = mktime(0,0,0,date("m")-1,date("d"),  date("Y"));
$nextyear  = mktime(0,0,0,date("m"),  date("d",   date("Y")+1);


Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Or as freshmeat wants to say...RTFM! ;)

A simple answer to this Q is that you only need to output the date on the HTML site. So only this is used :

echo date( "M-d-Y", mktime(0,0,0,1,1,1999) );

output : Jan-01-1999

Here's a nasty fix :

      //$date is a date like '1999-12-31'
       $year = substr($date,0,4);
              $month = substr($date,5,2);
              $day  = substr($date,8,2);
      $newdate = $day.'-'.$month.'-'.$year;

So, $date is the start date where each month and day must be two characters, eg 02,  11 etc. and puts the formatted date in $newdate.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.