2013-12-08 5 views
0

Я пытаюсь отобразить дату внутри таблицы, используя приведенный ниже код.
Теперь предположим, что дата для показа - 12 декабря 2013 года, затем echo $ date1 отображает дату как 2013-12-12. Но echo date("j-F-Y", strtotime($date1)); отображается дата, как 31 декабря 1969.Функция даты показывает неправильную дату

<script id="template" type="text/x-handlebars-template"> 
<table>  
<tr> 
    <th>Posted on: </th> 
    <td><?php $date1='{{posted}}';echo $date1 ;echo date("j-F-Y", strtotime($date1));?></td> 
    </tr> 
</table> 
</script> 

Что я должен сделать, чтобы отобразить дату, напечатанные в $ date1. Почему дата() не отображает правильную дату.

+0

Тег rdms 'mysql' Я думаю !! –

+0

где я должен пометить mysql здесь – user3004356

+0

Что действительно запустит стропотайм? Может быть, ложь или -1? – benestar

ответ

1

strtotime возвращает либо false, либо -1 (до 5.1) при сбое. Эта отметка времени (0) будет равна 1970-01-01 00:00:00 GMT. С часовым поясом где-то в «минус-то», который был бы равен дате 1969-12-31.

So strtotime($date1) не удалось разобрать $date1. Вы уверены, что это соответствует строке '2013-12-12'? Используйте var_dump($date1); для проверки.

Это может быть объект с __toString() -методом, поэтому эхо будет показывать результат этого метода, а не фактическое значение $date1.

+0

Когда я сделал var_dump ($ date1), я получил строку (10) «2013-12-12» ' – user3004356

+0

Это странно, что делает' var_dump (strtotime ($ date1)) 'say? –

+0

'var_dump (strtotime ($ date1))' возвращает bool (false) – user3004356

-1

Метод strtotime возвращает что-то еще для 2013-12-12, чем вы ожидаете. Смотрите здесь: http://www.php.net/manual/de/function.strtotime.php#100144

Лучший способ компенсировать это путем изменения вашего присоединения символов. Прямая косая черта (/) означает американское форматирование M/D/Y, a тире (-) означает европейский D-M-Y, а период (.) Означает ISO Y.M.D.

Таким образом, вы должны использовать другой формат в strtotime. Это также объясняет, почему дата возвращает значение за один день до первого января 1970 года.

+0

Согласно самому руководству PHP (а не комментариям): «Чтобы избежать потенциальной двусмысленности, лучше использовать даты ISO 8601 (YYYY-MM-DD) –

Смежные вопросы