У меня есть дата и время, поступающие из выбранной формы в формате 12:00 PM Sat Mar 15
чисто из эстетических соображений. Функция PHP strtotime
преобразует это в (и более чем вероятно справедливо): 1394866800
.
Однако, когда я готовлю время для своей базы данных $db_time = date('Y-m-d H:i:s', $time_req);
, я получаю 2014-03-15 00:00:00
. Есть ли способ сохранить визуально привлекательное отображение времени, но при этом ввести правильный формат в мою базу данных MySQL?
2 ответа
Проблема в том, что вы вводите нестандартный формат, потому что сначала идет время, затем день недели, затем месяц и день месяца. Вам нужно указать PHP, как это интерпретировать.
Вы можете использовать date_create_from_format
, вот так:
$formatted_date = '12:00 PM Sat Mar 15';
// to use your POST data, use $formatted_date = $_POST['time_req'];
echo date_create_from_format('H:i A D M j', $formatted_date)->format('Y-m-d H:i:s');
Вывод:
2014-03-15 12:00:00
Примечание. Вышеупомянутая процедура представляет собой однострочную процедурную версию метода DateTime::createFromFormat
, как указано @MarkBaker в комментариях. Вы также можете:
$formatted_date = '12:00 PM Sat Mar 15';
// to use your POST data, use $formatted_date = $_POST['time_req'];
// create an object
$mydate = DateTime::createFromFormat('H:i A D M j', $formatted_date);
// invoke the format method
echo $mydate->format('Y-m-d H:i:s');
$_POST['time_req']
там, где вы видите '12:00 PM Sat Mar 15'
в моем ответе; не нужно ничего приводить к строке. Пример: echo date_create_from_format('H:i A D M j', $_POST['time_req'])->format('Y-m-d H:i:s');
Используйте DateTime::createFromFormat()
$st = "12:00 PM Sat Mar 15";
$datetime = DateTime::createFromFormat("H:i A D M j", $st);
$mysql_formatted = $datetime->format("Y-m-d H:i:s");
Похожие вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.
option
имеет атрибутvalue
помимо его текстового содержимого… последний следует использовать только из «эстетических соображений», тогда не пришлось бы заморачиваться такими вещами.