При преобразовании времени MySQL в PHP я всегда получаю 16:00:20, независимо от времени MySQL - PullRequest
1 голос
/ 12 июля 2010

У меня проблемы с преобразованием времени, когда я использую функцию date () для отметки времени mysql, она возвращает только 16:00.

Я неправильно использую функцию date ()?

PHP:

date_default_timezone_set('America/Los_Angeles');

$date = date('H:i:s A'); 
echo "System: $date <br />";

$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$query = "SELECT CURTIME() as timestamp";
$result = mysqli_query($dbc, $query) or die(mysqli_error());
$row = mysqli_fetch_assoc($result);
echo "DB CurTime: ".$row["timestamp"]."<br />";
echo "DB CurTime Converted: ".date("H:i:s A",$row["timestamp"]);

ВЫХОД:

Система: 20:41:23 PM

DB CurTime: 20: 41: 23

DB CurTime Преобразовано: 16:00:20 PM

Ответы [ 4 ]

5 голосов
/ 12 июля 2010

Да, вы используете date() неправильно. date() принимает второй аргумент в форме метки времени UNIX, но это не то, что вы передаете.

Используйте UNIX_TIMESTAMP() вместо CURTIME() при извлечении из MySQL, хотя мне непонятно, почему вы получаете время от MySQL вместо того, чтобы использовать совершенно хороший PHP time().

3 голосов
/ 12 июля 2010

CURTIME() не возвращает метку времени UNIX в секундах. Вам нужно будет запустить strtotime() на нем.

Ваша последняя строка должна выглядеть так:

echo "DB CurTime Converted: ".date("H:i:s A", strtotime($row["timestamp"]));

С другой стороны, Ответ Калиума также содержит информацию, заслуживающую рассмотрения.

2 голосов
/ 12 июля 2010

Попробуйте:

echo "DB CurTime Converted: ".date("H:i:s A",strtotime($row["timestamp"]));

edit - упс, слишком медленно.

0 голосов
/ 12 июля 2010

Вам необходимо либо преобразовать время с помощью функции mysql unix_timestamp (), либо преобразовать время в PHP с помощью strtotime ().

Решение 1 изменить ваш запрос

$query = "SELECT UNIX_TIMESTAMP(CURTIME()) as timestamp";

Я не проверял этот запрос, но я верю, что он будет работать.

Решение 2: изменить последнюю строку

echo "DB CurTime Converted: ".date("H:i:s A",strtotime($row["timestamp"]));

Вы можете попробовать любого! оба должны давать один и тот же результат!

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