PHP: How do I convert a server timestamp to the user's timezone?

前端 未结 3 1811
终归单人心
终归单人心 2020-12-16 08:29

I\'m currently storing times using the \'time()\' function in the database. However, it\'s using the timezone of the server, and I\'d like for each user to see the time acco

3条回答
  •  孤街浪徒
    2020-12-16 09:17

    Really you should not be hacking the timestamps themselves to change the date within, you should just be applying the timezone to the timestamp before presenting the formatted datestamp to the user.

    This is a modified version of Mike's code that should work for PHP 5 >= 5.2.0 as found on php.net

    // OO Code
    $st = 1170288000 //  a timestamp 
    $dt = new DateTime("@$st"); 
    $dt->setTimeZone(new DateTimeZone('America/New_York'));
    $adjusted_timestamp = $dt->format('U') + $dt->getOffset();
    echo ' Timestamp adjusted for America/New_York: ' . $adjusted_timestamp;
    
    // Procedural Code
    $st = 1170288000 //  a timestamp 
    $dt = date_create("@$st"); 
    date_timezone_set($dt, timezone_open('America/New_York'));
    $adjusted_timestamp = date_format($dt, 'U') + date_offset_get($dt);
    echo ' Timestamp adjusted for America/New_York: ' . $adjusted_timestamp;
    

提交回复
热议问题