Date Format gone wrong
It is displaying the wrong date after being echoed but is fine when just the date is echoed as well as in the database.
$date = $row['date'];
echo "<p><b>" . $row['review'] . "</b></p><p>" . date("F jS, Y g:i A", $date) . "</p><h1 class='centered'>Comments</h1></article>";
What format is the date stored in the database? Is it just a timestamp?
Sounds to me that its stored in a date/datetime datatype if you can view it directly from pulling a db record.
That means your result of calling the date function will result in either December 31, 1969 or January 1, 1970 depending on your timezone (its currently at unix epoch).
Therefore you cannot use the date() function directly as it requires an integer timestamp. Your options are either to:
- Format the date in the query
- Use the UNIX_TIMESTAMP function in MySQL to convert it to a timestamp
- Split the parts up and use the mktime function
- Run the result through an strtotime or DateTime object to convert it to an appropriate timestamp. Then use date or DateTime::format on it.
Originally Posted by LearningCoder
It is stored in a timestamp format, but is still displaying December 31, 1969 4:33 PM
Originally Posted by Fou-Lu
EDIT:Still not sure what was the issue but got it displaying the correct date by calling it through the strotime() function.
Yeah this is where it gets confusing.
Originally Posted by elitis
Timestamp in MySQL is a [more or less] datetime type that has been given an explicit range (from epoch to 32bit max [ie: January 19, 2038 @ 03:14:07; the real year 2000]). So its represented internally as a number, while datetime would be a string. When passed to PHP, it is a string, not a number.
Timestamp in PHP is an integer. Using the UNIX_TIMESTAMP returns the integer timestamp result of the MySQL TIMESTAMP so that PHP can make use of it as a $timestamp in its date functions.