Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 5 of 5
  1. #1
    Regular Coder
    Join Date
    Sep 2010
    Posts
    331
    Thanks
    9
    Thanked 6 Times in 6 Posts

    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>"
    Last edited by elitis; 12-10-2012 at 06:38 PM.
    Coding is a challenge, get used to it
    Always remember to debug
    Try the guess & check method
    Break it down into simple steps

  • #2
    Regular Coder LearningCoder's Avatar
    Join Date
    Jan 2011
    Location
    The Pleiades
    Posts
    923
    Thanks
    76
    Thanked 29 Times in 29 Posts
    What format is the date stored in the database? Is it just a timestamp?

    Regards,

    LC.

  • #3
    God Emperor Fou-Lu's Avatar
    Join Date
    Sep 2002
    Location
    Saskatoon, Saskatchewan
    Posts
    16,987
    Thanks
    4
    Thanked 2,660 Times in 2,629 Posts
    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.

  • #4
    Regular Coder
    Join Date
    Sep 2010
    Posts
    331
    Thanks
    9
    Thanked 6 Times in 6 Posts
    Quote Originally Posted by LearningCoder View Post
    What format is the date stored in the database? Is it just a timestamp?

    Regards,

    LC.
    Quote Originally Posted by Fou-Lu View Post
    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.
    Last edited by elitis; 12-10-2012 at 06:37 PM.
    Coding is a challenge, get used to it
    Always remember to debug
    Try the guess & check method
    Break it down into simple steps

  • #5
    God Emperor Fou-Lu's Avatar
    Join Date
    Sep 2002
    Location
    Saskatoon, Saskatchewan
    Posts
    16,987
    Thanks
    4
    Thanked 2,660 Times in 2,629 Posts
    Quote Originally Posted by elitis View Post
    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.


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •