CodingForums.com

CodingForums.com (http://www.codingforums.com/index.php)
-   PHP (http://www.codingforums.com/forumdisplay.php?f=6)
-   -   Resolved Date Format gone wrong (http://www.codingforums.com/showthread.php?t=283915)

elitis 12-10-2012 05:39 PM

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.
PHP Code:

$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>"


LearningCoder 12-10-2012 06:00 PM

What format is the date stored in the database? Is it just a timestamp?

Regards,

LC.

Fou-Lu 12-10-2012 06:05 PM

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:
  1. Format the date in the query
  2. Use the UNIX_TIMESTAMP function in MySQL to convert it to a timestamp
  3. Split the parts up and use the mktime function
  4. Run the result through an strtotime or DateTime object to convert it to an appropriate timestamp. Then use date or DateTime::format on it.

elitis 12-10-2012 06:19 PM

Quote:

Originally Posted by LearningCoder (Post 1298791)
What format is the date stored in the database? Is it just a timestamp?

Regards,

LC.

Quote:

Originally Posted by Fou-Lu (Post 1298797)
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:
  1. Format the date in the query
  2. Use the UNIX_TIMESTAMP function in MySQL to convert it to a timestamp
  3. Split the parts up and use the mktime function
  4. Run the result through an strtotime or DateTime object to convert it to an appropriate timestamp. Then use date or DateTime::format on it.

It is stored in a timestamp format, but is still displaying December 31, 1969 4:33 PM
EDIT:Still not sure what was the issue but got it displaying the correct date by calling it through the strotime() function.

Fou-Lu 12-10-2012 07:22 PM

Quote:

Originally Posted by elitis (Post 1298807)
It is stored in a timestamp format, but is still displaying December 31, 1969 4:33 PM
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.
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.


All times are GMT +1. The time now is 10:15 AM.

Powered by vBulletin®
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.