Как преобразовать 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.