it-roy-ru.com

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?

21
AssamGuy

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

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

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

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

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

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

1
Kaushal Roy

Используйте код ниже для 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');
0
Dayz

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

Преобразовать указатель даты dd/mm/yyyy в yyyy-mm-dd

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

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

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

0
Tye Lucas