У меня есть форум на PHP, который принимает дату, как в форме dd/mm/yyyy hh:mm:ss
. Однако мне нужно вставить его для SQL как DATETIME в формате как yyyy-mm-dd hh:mm:ss
. Как я могу преобразовать эти данные?
Формат даты недействителен: dd/mm/yyyy hh:mm:ss
. Вероятно, вы имеете в виду d/m/YH:i:s
Если у вас версия 5.3+, есть безопасный способ конвертировать дату в другой формат. Вот пример:
$timestamp = '31/05/2001 12:22:56'; $timestamp = DateTime::createFromFormat('d/m/YH:i:s', $timestamp); echo $timestamp->format('Ymd H:i:s');
или если вам нравится более процедурный способ:
$timestamp = '31/05/2001 12:22:56'; $timestamp = date_create_from_format('d/m/YH:i:s', $timestamp); echo date_format($timestamp, 'Ymd H:i:s');
Будьте осторожны с предыдущими предложениями. Некоторые из них совершенно ошибочны, а другие могут привести к ошибкам.
Вы можете использовать strtotime и дату, чтобы переработать формат.
$new_date = date( "Ymd H:i:s", strtotime( $old_date ) );
Это означает, что ваша старая дата ( dd/mm/yyyy hh:mm:ss
) преобразует ее в временную метку unix, которая затем может использоваться с функцией даты php для форматирования даты до нужного формата.
Два из нескольких возможных способов:
$mysqldate = date( 'Ymd H:i:s', $phpdate );
$query = "UPDATE table SET datetimefield = FROM_UNIXTIME($phpdate) ...";
если у вас есть datetime avaialable from from from above above format, тогда вам просто нужно использовать следующую функцию.
function localToMysql($dateTime){ $date_chunks = explode('/', $dateTime); $time_chunks = explode(' ', $date_chunks[2]); $final_format = $time_chunks[0] . "-" . $date_chunks[1] . "-" . $date_chunks[0] . " " . $time_chunks[1];
return $ final_format; }