我有一个事件日历,在这个日历中,我将从数据库中提取事件。不过,从技术上讲,午夜项目在编程上更早,因此它们在列表中首先出现。我如何排序,以便午夜和以后的项目将出现在列表的末尾?
usort($events, function($a, $b) {
//if after midnight (before 8am of next day)
return strtotime($a['start_time']) >= strtotime('8:00') ? strtotime($a['start_time']) - strtotime($b['start_time']) : 1;
});按照我现在的方式,他们按正确的顺序排序,但午夜或更晚的项目在第一项之后才出现。如果我在没有“早上8点之前”的情况下正常排序的话,他们就会先出现。
发布于 2017-11-06 20:42:43
如果时间是在清晨,在它加上一天,所以它将是晚上的时间。
usort($events, function($a, $b) {
$oneday = 86400; // seconds in a day
$cutoff = strtotime('8:00');
$atime = strtotime($a['start_time']);
if ($atime < $cutoff) {
$atime += $oneday;
}
$btime = strtotime($b['start_time']);
if ($btime < $cutoff) {
$btime += $oneday;
}
return $atime - $btime;
});https://stackoverflow.com/questions/47145338
复制相似问题