Как преобразовать mysql datetime в PHP в формат m/d/y?
Я пытаюсь преобразовать mysql DATETIME в этот формат m/d/y, но код ниже не работает, возвращает 12/31/1969, а может кто-нибудь покажет мне, как это сделать?
$fromMYSQL = '2007-10-17 21:46:59'; //this is the result from mysql DATETIME field
echo date("m/d/Y", $fromMYSQL);
Ответы
Ответ 1
Я думаю, что вы действительно хотите:
$fromMYSQL = '2007-10-17 21:46:59';
echo date("m/d/Y", strtotime($fromMYSQL));
Второй аргумент даты - это метка времени, и я думаю, что происходит, когда PHP видит вашу строку как отметку -1... таким образом, 12/31/1969.
Итак, чтобы получить временную метку из строковой версии даты, вы используете strtotime
Ответ 2
SQL:
SELECT whatever, UNIX_TIMESTAMP(date) date FROM table WHERE whatever
PHP:
date('m/d/Y', $result['date']);
Ответ 3
Лучший способ - преобразовать directform date прямо в ваш Querystring:
$TimeFormat = "%m/%d/%Y"; // your pref. Format
$sql = "SELECT DATE_FORMAT(DateCol , '" . $TimeFormat . "') as ConvertDate FROM tblTest";
В противном случае вы можете изменить эту функцию в соответствии с вашими потребностями:
function format_date($original, $format) {
if (empty($original)) {
$original = date("Y-m-d H:i:s");
}
$original = ereg_replace("30 Dez 1899", "30-01-1973", $original);
$format = ($format=='date' ? "%m-%d-%Y" : $format);
$format = ($format=='germandate' ? "%d.%m.%y" : $format);
$format = ($format=='germandaydate' ? "%A, %d.%m.%Y" : $format);
$format = ($format=='germantime' ? "%H:%M" : $format);
$format = ($format=='germandatetime' ? "%d.%m.%y %H:%M:%S" : $format);
$format = ($format=='datetime' ? "%m-%d-%Y %H:%M:%S" : $format);
$format = ($format=='mysql-date' ? "%Y-%m-%d" : $format);
$format = ($format=='mysql-datetime' ? "%Y-%m-%d %H:%M:%S" : $format);
$format = ($format=='mssql-date' ? "%Y%m%d" : $format);
$format = ($format=='mssql-datetime' ? "%Y%m%d %H:%M:%S" : $format);
$format = ($format=='Ymd' ? "%Y-%m-%d" : $format);
return !empty($original) ? strftime($format, strtotime($original)) : "";
}
Ответ 4
Вам нужна капитальная Y
int строка формата даты. нижний регистр Y
дает двузначный год, а верхний регистр "Y" дает четырехзначный год.
$fromMYSQL = '2007-10-17 21:46:59';
echo date("m/d/Y", strtotime($fromMYSQL));
Справочная страница PHP для даты может оказать некоторую помощь.
Ответ 5
Я рассмотрел это в своем ответе на h fooobar.com/questions/462312/... - в основном, date()
ожидает отметку времени Unix, из которой он вычисляет дату/время и форматы. Вы передаете строку, которая исходит из результата запроса MySQL, который, вероятно, получает искалеченный PHP-утиным, вводящим в нечто, похожее на отметку времени Unix, но не имеет никакого смысла.
Я объясню пару подходов к работе с столбцами даты в моем ответе.
Ответ 6
Два вопроса:
1) Вам нужен капитал Y
2) Вам нужен правильный тип даты.
Попробуйте
$fromMYSQL = date_create ('2007-10-17 21:46:59');
echo date("m/d/Y", $fromMYSQL);
Упс, strtotime - это правильное преобразование в метку времени. date_create возвращает объект DateTime.