I have been trying to use date_format
, however as far as I know, it only takes timestamps and then it formats the date in whatever way you want to display it.
My issue is the following, the dates in my database are with the following format:
2012-05-14 // (Y-m-d)
and I want to display them as: June 14th, 2012
or the closest format to that.
Is there any built-in date in PHP to make such transformation? Thanks!
Do the transformation in the database, so you don't do multiple round-trips through various string/binary formats each time:
SELECT DATE_FORMAT(yourdatefield, '%M %D, %Y')
relevant docs here: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format
Anything else will require the following transformations sequence:
mysql native -> mysql string -> php string -> php timestamp -> php string
v.s.
mysql native -> mysql string -> php string
<?php echo date('F jS, Y', strtotime('2012-06-14')); ?>
http://php.net/manual/en/function.date.php
echo date("F jS, Y", strtotime($mysql_row_date_goes_here));
You can use strtotime()
to convert date into time and then use date()
. Or you can tell your database how to format date with proper SQL.
You can also use createFromFormat:
date = DateTime::createFromFormat('Y-m-d', $yourTimeString);
echo $date->format('F jS, Y');
You could try something like this:
$date_string = 2012-05-14;
$formatted_date = date('F jS, Y', strtotime($date_string));
echo $formatted_date;