Текущая временная метка в PHP и MySQL - PullRequest
1 голос
/ 03 августа 2011

Я использую PHP для печати текущей метки времени, используя time(), и у меня есть столбец MySQL, в котором хранится дата, которую я конвертирую в метку времени, используя strtotime().Однако, когда я печатаю преобразованные значения, у меня разница в один час между ними.Реальная разница в секундах.Что не так?

Ответы [ 4 ]

2 голосов
/ 03 августа 2011

Установите часовой пояс , прежде чем вводить время

date_default_timezone_set('America/Los_Angeles'); // Whatever your timezone is

mysql_query("INSERT
            INTO table
            (date)
            VALUES
            (" . time() . ")") or die(mysql_error());
2 голосов
/ 03 августа 2011

Предполагая, что они оба работают на одном физическом сервере, это, вероятно, несоответствие часового пояса.

Вы можете проверить часовой пояс на своем сервере MySQL, выполнив следующий запрос в консоли MySQL:

SELECT @@global.time_zone;

И на вашей странице PHP, запустив скрипт с:

echo date_default_timezone_get();

Как только вы выясните, какой из них неправильный, вы сможете исправить это, отредактировав my.cnf или php.ini.

Вы также можете изменить часовой пояс по умолчанию во время выполнения, используя date_default_timezone_set ().

0 голосов
/ 19 октября 2012

Используйте функцию MySQL UNIX_TIMESTAMP(), чтобы получить текущее время эпохи:

INSERT INTO mytable SET tstamp = UNIX_TIMESTAMP();
0 голосов
/ 03 августа 2011

Вы можете использовать функцию PHP strftime , поскольку она учитывает местные часовые пояса.Возможно, вы столкнулись с проблемой перехода на летнее время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...