我有一个活动日历,我正在从数据库中撤回事件。然而,午夜项目在技术上是以编程方式提前,因此它们首先出现在列表中。我如何排序以便午夜及以后的项目会显示在列表的末尾?
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;
});
我现在拥有它的方式,它们按正确的顺序排序,但午夜或之后的项目正好出现在第一项之后。如果我在没有这个“8am之前的条件”的情况下正常排序它们会首先出现。
答案 0 :(得分:1)
如果时间是在清晨,请加上一天,以便在晚上之后。
#include "stdafx.h"
#include <vector>
#include <iostream>
#include <algorithm>
enum EMode
{
a
,b
,c
};
void doTheThing(const EMode m)
{
std::cout << "Found mode " << m << std::endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<EMode> modeList;
modeList.push_back(EMode::a);
modeList.push_back(EMode::c);
const auto mode = find_if(modeList.cbegin(), modeList.cend(), [](const EMode m)
{
return c == m;
});
if(modeList.end() != mode)
{
doTheThing(mode);
}
return 0;
}