После преобразования метки времени в дату и обратно — откуда взялась разница?

Поскольку использование метки времени приводит к лучшей производительности в MySQL, я хочу сохранить время как метку времени в моей базе данных. Я получаю строку даты и времени, например: 2014-09-24 17:18:27, преобразовать ее в метку времени с помощью strtotime($the_date_from_above) и просто для удовольствия я преобразовал его обратно с date("Y-m-d H:m:s", strtotime($the_date_from_above))

Я var_dumped процесс:

string(19) "2014-09-24 17:18:27"int(1411579107)
string(19) "2014-09-24 17:09:27"

Что пошло не так во время преобразования строки? Что вызывает разницу? Это такое же количество секунд, но разница в 9 минут странная.

-2

Решение

Вам нужно будет преобразовать его обратно так:

date("Y-m-d H:i:s", strtotime($the_date_from_above))

Когда вы конвертируете это по-своему, m в H:m:s лечится как месяц.

Еще лучше было бы использовать класс datetime:

$date = new DateTime();
$date = $date->setTimestamp($yourtimestamp);
echo $date->format("Y-m-d H:i:s");
7

Другие решения

date("Y-m-d H:m:s", strtotime($the_date_from_above))
^-----^---

ты используешь m в два раза, что является значением МЕСЯЦЕВ. Минуты на самом деле i,

1

Вы просто используете неправильный шаблон даты и времени «Y-m-d H: m: s» должен быть «Y-m-d H: i: s». Маленькая ошибка

Но я не понимаю, почему ты так поступаешь? Поскольку MySql имеет правильный тип столбца для сохранения значений даты и времени, тип timestamp обычно используется для другой цели.

Для повышения производительности и точности, если вы хотите использовать значение для следующего вычисления, можете сохранить в базе данных это значение в виде строки. (означает метку времени с миллисекундами)

0
По вопросам рекламы [email protected]