离线时间提醒方式为:离线xx秒,离线xx分钟,离线xx小时,离线xx天;
#include <QDebug>
#include <QList>
#include <QStringList>
const int SEC_TIME = 1;
const int MINUTE_SEC_TIME = 60;
const int HOUR_SEC_TIME = 3600;
const int DAY_SEC_TIME = 86400;
long int findNumFromStr(QString timeStr, int basicSec);
int main()
{
QStringList offLineList;
offLineList<<"离线11分钟"<<"离线3分钟"<<"离线51分钟"<<"离线7小时"<<"离线15小时"<<"离线12小时"
<<"离线21天"<<"离线2天"<<"离线29天"<<"离线16小时"<<"离线50天"<<"离线30秒";
QList<long int> secondTime = {0};
foreach (QString timeStr, offLineList) {
if (timeStr.contains("秒")) {
secondTime.append(findNumFromStr(timeStr, SEC_TIME));
} else if(timeStr.contains("分钟")) {
secondTime.append(findNumFromStr(timeStr, MINUTE_SEC_TIME));
} else if(timeStr.contains(("小时"))) {
secondTime.append(findNumFromStr(timeStr, HOUR_SEC_TIME));
} else if(timeStr.contains("天")) {
secondTime.append(findNumFromStr(timeStr, DAY_SEC_TIME));
}
}
std::sort(secondTime.begin(),secondTime.end());
QStringList offLineOrder;
QList<long int>::iterator it;
for (it = secondTime.begin();it != secondTime.end();it++) {
if ((*it) > 0 && (*it) < MINUTE_SEC_TIME) {
offLineOrder.append("离线" + QString::number(*it) + "秒");
} else if ((*it) >= MINUTE_SEC_TIME && (*it) < HOUR_SEC_TIME) {
offLineOrder.append("离线" + QString::number(*it / MINUTE_SEC_TIME) + "分钟");
} else if ((*it) >= HOUR_SEC_TIME && (*it) < DAY_SEC_TIME) {
offLineOrder.append("离线" + QString::number (*it / HOUR_SEC_TIME) + "小时");
} else if ((*it)>= DAY_SEC_TIME) {
offLineOrder.append("离线" + QString::number(*it / DAY_SEC_TIME) + "天");
}
}
foreach (QString timeOrder, offLineOrder) {
qDebug()<<timeOrder;
}
return 0;
}
long int findNumFromStr(QString timeStr, int basicSec)
{
QString timeFromNum;
for (int i = 0;i < timeStr.length(); i++) {
if(timeStr[i] >= '0' && timeStr[i] <= '9') {
timeFromNum.append(timeStr[i]);
}
}
long int timeToSec = timeFromNum.toInt() * basicSec;
return timeToSec;
}
排序后结果为: