我有一个日期格式为dd/mm/yyyy
的表单。为了搜索数据库,我将日期格式转换为yyyy-mm-dd
。但当我echo
时,它显示1970-01-01
。PHP代码如下:
$date1 = $_REQUEST['date'];
echo date('Y-m-d', strtotime($date1));
为什么会这样?如何将其格式化为yyyy-mm-dd
?
用-
:替换/
$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));
1970年1月1日是所谓的Unix时代。这是他们开始计算Unix时间的日期。如果您将此日期作为返回值,这通常意味着将日期转换为Unix时间戳会返回(接近-)零的结果。所以日期转换没有成功。很可能是因为它收到了错误的输入。
换句话说,strtotime($date1)
返回0,这意味着$date1
是以strtotime函数不支持的格式传递的。
$inputDate = '07/05/-0001';
$dateStrVal = strtotime($inputDate);
if(empty($dateStrVal))
{
echo 'Given date is wrong';
}
else{
echo 'Date is correct';
}
O/p:给定日期错误
$date1 = $_REQUEST['date'];
if($date1) {
$date1 = date( 'Y-m-d', strtotime($date1));
} else {
$date1 = '';
}
当$date
中存在有效的date()
时,这将正确显示,如果没有,则不显示任何内容
为我解决了这个问题。
另一个解决方法:
将日期选择器dd/mm/yyyy
转换为yyyy-mm-dd
$startDate = trim($_POST['startDate']);
$startDateArray = explode('/',$startDate);
$mysqlStartDate = $startDateArray[2]."-".$startDateArray[1]."-".$startDateArray[0];
$startDate = $mysqlStartDate;
问题是,当您的数据设置为000-00-00或为空时,您必须仔细检查并提供正确的信息,此问题就会消失。我希望这能有所帮助。
将以下代码用于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');
最后我找到了一个单行代码来解决这个问题
date('d/m/Y', strtotime(str_replace('.', '-', $row['DMT_DATE_DOCUMENT'])));