转换后显示'1970-01-01'的PHP日期

时间:2012-01-24 09:38:05

标签: php mysql date strtotime

我有一个日期格式为dd/mm/yyyy的表单。为了搜索数据库,我将日期格式转换为yyyy-mm-dd。但是当我echo时,它会显示1970-01-01。 PHP代码如下:

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

为什么会这样?如何将其格式化为yyyy-mm-dd

8 个答案:

答案 0 :(得分:58)

/替换为-

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

答案 1 :(得分:30)

1970年1月1日是所谓的Unix时代。这是他们开始计算Unix time的日期。如果将此日期作为返回值,则通常意味着将日期转换为Unix时间戳会返回(接近)零结果。所以日期转换不成功。很可能是因为它收到错误的输入。

换句话说,您的strtotime($date1)返回0,这意味着$date1以不受支持的strtotime函数格式传递。

答案 2 :(得分:1)

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

O / P:给定日期是错误的

答案 3 :(得分:0)

使用以下代码获取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');

答案 4 :(得分:0)

$date1 = $_REQUEST['date'];

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

如果date()中有效$date,则会正常显示,如果没有则显示任何内容。
为我解决了这个问题。

答案 5 :(得分:0)

另一种解决方法:

将日期选择器dd/mm/yyyy转换为yyyy-mm-dd

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

答案 6 :(得分:0)

问题是当您的数据设置为000-00-00或为空时,您必须仔细检查并提供正确的信息,此问题将消失。希望对您有所帮助。

答案 7 :(得分:-2)

最后我找到了一行代码来解决这个问题

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