PHP дата, показывающая '1970-01-01' после конвертации - PullRequest
22 голосов
/ 24 января 2012

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

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

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

Ответы [ 7 ]

59 голосов
/ 24 января 2012

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

$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));
30 голосов
/ 24 января 2012

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

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

1 голос
/ 24 октября 2018
$inputDate = '07/05/-0001';
$dateStrVal = strtotime($inputDate);
if(empty($dateStrVal))
{
  echo 'Given date is wrong'; 
}
else{
 echo 'Date is correct';
}

O / P: указана неправильная дата

0 голосов
/ 12 декабря 2018

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

Преобразование даты dd/mm/yyyy в yyyy-mm-dd

$startDate = trim($_POST['startDate']);
$startDateArray = explode('/',$startDate);
$mysqlStartDate = $startDateArray[2]."-".$startDateArray[1]."-".$startDateArray[0];
$startDate = $mysqlStartDate;
0 голосов
/ 16 октября 2017
$date1 = $_REQUEST['date'];

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

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

0 голосов
/ 29 апреля 2017

Используйте код ниже для 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 голосов
/ 19 августа 2015

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

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