У меня есть форма, в которой формат даты равен dd/mm/yyyy
. Для поиска базы данных я исказил формат даты до yyyy-mm-dd
. Но когда я echo
это, он показывает 1970-01-01
. Ниже приведен код PHP:
$date1 = $_REQUEST['date']; echo date('Ym-d', strtotime($date1));
Почему это происходит? Как я могу отформатировать его до yyyy-mm-dd
?
Заменить /
с -
:
$date1 = strtr($_REQUEST['date'], '/', '-'); echo date('Ym-d', strtotime($date1));
1 января 1970 года – так называемая эпоха Unix. Это дата, когда они начали отсчитывать время Unix . Если вы получите эту дату как возвращаемое значение, это обычно означает, что преобразование вашей даты в временную метку Unix вернуло (почти) нулевой результат. Таким образом, преобразование даты не выполняется. Скорее всего, потому, что он получает неправильный ввод.
Другими словами, ваш strtotime($date1)
возвращает 0, что означает, что $date1
передается в неподдерживаемом формате для функции strtotime.
Используйте нижеприведенный код для php 5.3+:
$date = new DateTime('1900-02-15'); echo $date->format('Ym-d');
Используйте нижеприведенный код для php 5.2:
$date = new DateTime('1900-02-15'); echo $date->format('Ym-d');
$date1 = $_REQUEST['date']; if($date1) { $date1 = date( 'Ym-d', strtotime($date1)); } else { $date1 = ''; }
Это будет отображаться правильно, если в $date
есть действительная date()
и ничего не отображать, если нет.
Решил проблему для меня.
наконец, я нашел один код для решения этой проблемы
date('d/m/Y', strtotime(str_replace('.', '-', $row['DMT_DATE_DOCUMENT'])));