Дата PHP, показывающая "1970-01-01" после преобразования - программирование
Подтвердить что ты не робот

Дата PHP, показывающая "1970-01-01" после преобразования

У меня есть форма, в которой формат даты dd/mm/yyyy. Для поиска в базе данных я передал формат даты в yyyy-mm-dd. Но когда я echo это, это показывает 1970-01-01. Код PHP ниже:

$date1 = $_REQUEST['date'];     
echo date('Y-m-d', strtotime($date1));

Почему это происходит? Как я могу отформатировать его в yyyy-mm-dd?

4b9b3361

Ответ 1

Замените / на -:

$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));

Ответ 2

1 января 1970 года - так называемая эпоха Unix. Это дата, когда они начали считать Unix time. Если вы получите эту дату как возвращаемое значение, это обычно означает, что преобразование вашей даты в временную метку Unix вернуло (почти) нулевой результат. Таким образом, преобразование даты не выполняется. Скорее всего потому, что он получает неправильный ввод.

Другими словами, ваш strtotime($date1) возвращает 0, что означает, что $date1 передается в неподдерживаемом формате для функции strtotime.

Ответ 3

$inputDate = '07/05/-0001';
$dateStrVal = strtotime($inputDate);
if(empty($dateStrVal))
{
  echo 'Given date is wrong'; 
}
else{
 echo 'Date is correct';
}

O/P: данная дата неверна

Ответ 4

Используйте приведенный ниже код для php 5.3 +:

$date = new DateTime('1900-02-15');
echo $date->format('Y-m-d');

Используйте код ниже для php 5.2:

$date = new DateTime('1900-02-15');
echo $date->format('Y-m-d');

Ответ 5

$date1 = $_REQUEST['date'];

if($date1) {
    $date1 = date( 'Y-m-d', strtotime($date1));
} else {
    $date1 = '';
}

Это будет отображаться правильно, если в $date есть допустимый date() и ничего не отображать, если нет.
Решили проблему для меня.

Ответ 6

Другой обходной путь:

Преобразовать DatePicker dd/mm/yyyy в yyyy-mm-dd

$startDate = trim($_POST['startDate']);
$startDateArray = explode('/',$startDate);
$mysqlStartDate = $startDateArray[2]."-".$startDateArray[1]."-".$startDateArray[0];
$startDate = $mysqlStartDate;

Ответ 7

Наконец, я нашел один ряд строк для решения этой проблемы

date('d/m/Y', strtotime(str_replace('.', '-', $row['DMT_DATE_DOCUMENT'])));