Поскольку использование метки времени приводит к лучшей производительности в 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 минут странная.
Вам нужно будет преобразовать его обратно так:
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");
date("Y-m-d H:m:s", strtotime($the_date_from_above))
^-----^---
ты используешь m
в два раза, что является значением МЕСЯЦЕВ. Минуты на самом деле i
,
Вы просто используете неправильный шаблон даты и времени «Y-m-d H: m: s» должен быть «Y-m-d H: i: s». Маленькая ошибка
Но я не понимаю, почему ты так поступаешь? Поскольку MySql имеет правильный тип столбца для сохранения значений даты и времени, тип timestamp обычно используется для другой цели.
Для повышения производительности и точности, если вы хотите использовать значение для следующего вычисления, можете сохранить в базе данных это значение в виде строки. (означает метку времени с миллисекундами)