我有一个字符串格式的日期数组(年月日):
我还有一组日期时间(Y-m-d H:i:s)
答案 0 :(得分:0)
您应该使用strtotime()函数并将日期和日期时间以整数保存在数组中。比起您可以对其执行任何筛选。有关更多详细信息,请显示数组并阐明要从数组中过滤的内容。
答案 1 :(得分:0)
您可以将array_filter与in_array,日期和strtotime一起使用:
<?php
$dates = array("2018-01-01","2018-07-01", "2018-12-25");
$datetimes = array(
new DateTime('2018-07-01 12:00:00'),
new DateTime('2018-07-01 18:30:00'),
new DateTime('2018-07-02 10:00:00'),
new DateTime('2018-07-02 18:00:00'),
new DateTime('2018-07-04 11:11:00'),
new DateTime('2018-07-04 20:11:00')
);
$result = array_filter($datetimes, function ($datetime) use ($dates) {
return in_array(date("Y-m-d", $datetime->getTimestamp()), $dates);
});
var_dump($result);
这将产生以下结果:
array(2) {
[0]=>
object(DateTime)#1 (3) {
["date"]=>
string(26) "2018-07-01 12:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(16) "America/New_York"
}
[1]=>
object(DateTime)#2 (3) {
["date"]=>
string(26) "2018-07-01 18:30:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(16) "America/New_York"
}
}
如果您有大量数据,则可能需要将日期翻转到地图中,其中键为日期,值为true,以便可以执行isset而不是in_array,这会更快。