Search code examples
phpunix-timestamp

Convert timestamp coming from SQL database to String


I am saving the timestamp in SQL as bigint(20). The number is correct and in android or https://www.epochconverter.com it works fine.

However I am not able to create a date-string based on the timestamp received from database.

First of all, the timestamp seems to come from database as a String, so I can't just say echo date("d.m.Y, $timestamp). The result is the famous 31.12.1969.

So I tried echo date("d.m.Y, strtotime($timestamp)). However, even though strtotime is said to be able to convert almost everything to a timestamp, a simple String containing a timestamp is not possible. Results still remained on the last day of Brian Adams probably favorite year.

Some progress I made by casting the $timestamp to a float value like so: echo date("d.m.Y", floatval($timestamp));. However, now things got really confusing for me. I seemed to have successfully converted my timestamp, however, date() gave me the dates around 02.09.52299.

The timestamps I am using are timestamps of current time, e.g. 1588489252657, which currently leads to the date 23.03.52307.

So all I want is to come to a date based on the timestamp 1588489252657 to see the 03.05.2020 on my screen.

Thanks for any advice!


Solution

  • <?php
    
    $timestamp = 1588489252657; // Timestamp in Milliseconds
    $seconds = round($timestamp/1000, 0); // Timestamp Rounded to Seconds
    
    $date = new DateTime();  // Create PHP DateTime Object
    $date->setTimestamp($seconds); // Set the Timestamp
    echo $date->format('Y-m-d H:i:s'); // Specify the Required Format
    

    The answers are pretty much in the comment sections. But I have shared this answer since this is another approach in OOP fashion. You can leverage the power of PHP's DateTime Class.

    PHP Official Documentation For DateTime Class Link Below: PHP DateTime Class