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

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

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].

Chủ Đề