неправильно использовать час при использовании UNIX_TIMESTAMP и time () - PullRequest
0 голосов
/ 26 декабря 2010

Я установил свой MySQL DB: SET time_zone = 'America/Los_Angeles'; и в php

date_default_timezone_set('America/Los_Angeles');   

но когда я добавляю

$time = strtotime ("+2 minutes");

и

$time2 = gmdate("Y-m-d H:i:s", $time);  

в БД я ошибаюсь час неправильно, когда я получаю это из mysql следующим образом:

        $query ="select UNIX_TIMESTAMP("time"), time2 from tbl; 
        if ($result = $conn->query($query)) {
            while ($row = $result->fetch_assoc()) {
                $unix_time = $row["UNIX_TIMESTAMP("time")"];
                $unix_time2 = $row["time2"];
            }
            $result->close();
        }       ,

echo gmdate("Y-m-d H:i:s", $unix_time)." | ".gmdate("Y-m-d H:i:s", $unix_time2)." "; 

отображает:

2010-12-26 01:06:48 | 2010-12-26 02:06:24

1 Ответ

0 голосов
/ 26 декабря 2010

unix_timestamp() восстановит вашу местную метку времени, которая в настоящее время находится в режиме летнего времени.gmdate() работает по Greenwhich Mean Time, то есть UTC, который не имеет летнего времени, поэтому вы получите разницу в 1 час.Используйте date() вместо gmdate() для работы с DST-осведомленностью.

...