Php 我的变量未被填充,仍为空
我在比较日期方面有问题。我通过API从数据库中提取一个日期。这些日期存储在一个数组中,因为一列包含多个日期,我必须循环查找下一个即将到来的日期。日期的格式为:“dd/mm/yy”Php 我的变量未被填充,仍为空,php,date,compare,Php,Date,Compare,我在比较日期方面有问题。我通过API从数据库中提取一个日期。这些日期存储在一个数组中,因为一列包含多个日期,我必须循环查找下一个即将到来的日期。日期的格式为:“dd/mm/yy” $rawDate = $e->calendarsummary; $filter = preg_replace("/[a-z]/","", $rawDate); $createArray = explode(',', $filter); $dates = array_filter(array_map('trim',
$rawDate = $e->calendarsummary;
$filter = preg_replace("/[a-z]/","", $rawDate);
$createArray = explode(',', $filter);
$dates = array_filter(array_map('trim', $createArray));
foreach($dates as $d)
{
$dateTime = DateTime::createFromFormat('dmy', $d);
if($dateTime >= $now)
{
$finalDate = $dateTime;
$total = $finalDate->format('l j/m/y');
break;
}
}
如果我在$dateTime=dateTime::createFromFormat('dmy',$d)之后放置$dateTime的var_导出代码>它返回“false”。所以我猜$dateTime是空的,尽管我的数组$dates填充正确
$dates的var_导出返回:
数组(0=>'15/06/13',1=>'16/06/13',)
现在,var导出值$1将返回今天的日期:'16/06/13'
所以我有点困惑为什么我的变量$DateTime仍然是空的
编辑:很明显,返回'false'意味着这是一个错误,所以在格式化数组中的日期时出错了
$dateTime = DateTime::createFromFormat('d/m/y', $d);
不是
您的日期格式为d/m/y
,而不是dmy
。请尝试以下操作:
$dateTime = DateTime::createFromFormat('d/m/y', $d);
当我这样做时,我得到:
class DateTime#1 (3) { public $date => string(19) "2013-06-15 17:17:12" public $timezone_type => int(3) public $timezone => string(3) "UTC" }
。。。如果$dates
数组包含15/06/13
等元素,请使用错误的日期格式,而不是bool(false)
。例如:
$dateTime = DateTime::createFromFormat('d/m/y', $d);
您可以使用strotime作为另一种方法
$now = date('d/m/y');
foreach($dates as $d)
{
if(strtotime($d) >= strtotime($now))
{
$finalDate = $dateTime;
$total = date('l j/m/y', strtotime($d));
break;
}
}
$now = date('d/m/y');
foreach($dates as $d)
{
if(strtotime($d) >= strtotime($now))
{
$finalDate = $dateTime;
$total = date('l j/m/y', strtotime($d));
break;
}
}