Php convert unix timestamp to local time

I have a unix timestamp that is set to +5, but I'd like to convert it to -5, EST Standard time. I would just make the time stamp be generated in that time zone, but I'm grabbing it from another source which is putting it at +5.

Current Unmodified Timestamp Being Converted Into A Date


John Conde

214k98 gold badges447 silver badges489 bronze badges

asked May 25, 2013 at 14:21

Use DateTime and DateTimeZone:

$dt = new DateTime('@1369490592');
$dt->setTimeZone(new DateTimeZone('America/Chicago'));
echo $dt->format('F j, Y, g:i a');

answered May 25, 2013 at 14:23

John CondeJohn Conde

214k98 gold badges447 silver badges489 bronze badges

3

An easier way to do that is:

While using gmdate(), add your time zone in seconds to unix_stamp in gmdate.

Consider my time zone is GMT+5:30. So 5 hr 30 min in seconds will be 19800

So, I'll do this:

gmdate("F j, Y, g:i a", 1369490592+19800)

answered Jul 31, 2017 at 4:33

Php convert unix timestamp to local time

J ShubhamJ Shubham

5997 silver badges21 bronze badges

As because edit queue for John Conde's answer is full I'll add more detailed answer.

From DateTime::__construct(string $time, DateTimeZone $timezone)

The $timezone parameter and the current timezone are ignored when the $time parameter either is a UNIX timestamp (e.g. @946684800)…

This is the main reason why you should always specify timezone, even default, when creating DateTime objects from unix timestamp. See explained code inspired by John Conde's answer:

$dt = new DateTime('@1369490592');

// use your default timezone to work correctly with unix timestamps
// and in line with other parts of your application
date_default_timezone_set ('America/Chicago'); // somewhere on bootstrapping time
…
$dt->setTimeZone(new DateTimeZone(date_default_timezone_get()));

// set timezone to convert time to the other timezone
$dt->setTimeZone(new DateTimeZone('America/Chicago'));

echo $dt->format('F j, Y, g:i a');

answered Jun 13, 2017 at 9:36

teralesterales

2,84621 silver badges33 bronze badges

Here is a function to convert unix/gmt/utc timestamp to required timezone, that might interest you.

function unix_to_local($timestamp, $timezone){
    // Create datetime object with desired timezone
    $local_timezone = new DateTimeZone($timezone);
    $date_time = new DateTime('now', $local_timezone);
    $offset = $date_time->format('P'); // + 05:00

    // Convert offset to number of hours
    $offset = explode(':', $offset);
    if($offset[1] == 00){ $offset2 = ''; }
    if($offset[1] == 30){ $offset2 = .5; }
    if($offset[1] == 45){ $offset2 = .75; }
    $hours = $offset[0].$offset2 + 0;

    // Convert hours to seconds
    $seconds = $hours * 3600;

    // Add/Subtract number of seconds from given unix/gmt/utc timestamp
    $result = floor( $timestamp + $seconds );

    return $result;
}

answered Jul 11, 2019 at 18:49

Php convert unix timestamp to local time

MR_AMDEVMR_AMDEV

1,3722 gold badges16 silver badges34 bronze badges

How can I change Unix timestamp to date in PHP?

To convert a Unix timestamp to a readable date format in PHP, use the native date() function. Pass the format you wish to use as the first argument and the timestamp as the second.

Which function returns the Unix timestamp for a date in PHP?

The strtotime() function parses an English textual datetime into a Unix timestamp (the number of seconds since January 1 1970 00:00:00 GMT).

What is epoch in PHP?

The time() function in PHP returns the current time as a Unix timestamp. It returns the current time measured in the number of seconds since the Unix Epoch (January 1 1970 00:00:00 GMT).

How can I timestamp in PHP?

The PHP strtotime() function is used to convert a human readable date string into a Unix timestamp (the number of seconds since January 1 1970 00:00:00 GMT).