Php 用于foreach的DateTime函数
我这里有一个简单的代码,它将Php 用于foreach的DateTime函数,php,datetime,Php,Datetime,我这里有一个简单的代码,它将DateTime格式转换为Y-m-d。这是我的密码: $var = '2015-11-06'; $images = $db->query("SELECT * FROM images"); foreach ($images as $i) { $created_at = $i['created_at']; } $date = new DateTime($created_at); $newDate = $formattedDate->format('Y
DateTime
格式转换为Y-m-d
。这是我的密码:
$var = '2015-11-06';
$images = $db->query("SELECT * FROM images");
foreach ($images as $i) {
$created_at = $i['created_at'];
}
$date = new DateTime($created_at);
$newDate = $formattedDate->format('Y-m-d');
我数据库中的日期格式如下(2015-11-06 03:07:15
)
我想做的是在
$newDate
中获取所有等于$var
的值,并使用foreach
来回送所有相等的值。我怎么可能做到这一点呢?使用strotime将日期转换为unix时间戳并进行比较。我不太确定您在问什么,但可能就是这个问题。您必须在循环内进行格式化
foreach ($images as $i) {
$date = new DateTime($i['created_at']);
$dateFormatted = $date->format('Y-m-d');
if ($dateFormatted == $var) {
echo $dateFormatted;
}
}
您也可以在数据库查询中执行此操作:
$images = $db->query("SELECT * FROM images
WHERE created_at BETWEEN '$var 00:00:00' AND '$var 23:59:59'");
不知道你想做什么
$newDate
不是数组,它只是一个日期。由于您在循环外部调用new DateTime($created_at)
,因此您只使用最后一个图像的创建时间。您也可以只编写$created_at=$images[count($images)-1]['created_at']
。您的日期格式永远不会等于$var
,因为您使用-
分隔符进行格式化,但是$var
具有/
分隔符。为什么不基于日期搜索数据库?您可以使用以下选项搜索数据库:WHERE date(created_at)='$var'
,它只是将您想要的内容直接翻译成代码。