Qt系统运行时间差计算
在网上查了很多资料,发觉网上很多用Qt写的系统运行时间差的例子写的都不是很全,今天自己研究了一下,可以成功得显示日时分秒,觉得不错,就与大家分享了
#include<QtCore/QCoreApplication>
#include<QDateTime>
#include<QDebug>
int main(int argc,char*argv[])
{
QCoreApplication a(argc,argv);
QDateTime now=QDateTime::currentDateTime();
QDateTime Moon_Festival;
QDateTime xmas(QDate(now.date().year(),7,26),QTime(0,0));
//QDate(now.date().year()取当前的年分,可以自己设置,比如2012
Moon_Festival=xmas;
//这里最大计数为天
//这里涉及到两个函数daysTo()和SecsTo(),他们分别返回差值的天数和秒数,如果有朋友需要精确到毫秒的,QDateTime还提供了一个msecsTo() qDebug()<<now.daysTo(Moon_Festival)<<"days"<<now.secsTo(Moon_Festiv al)%(24*3600)/3600<<"hours"<<now.secsTo(Moon_Festival)%3600/60<<"min utes"<<now.secsTo(Moon_Festival)%60<<"seconds";
return a.exec();
}
至于最大计数为年或者月的,因为涉及到每个月的天数不同,以及闰年的存在,我这里就不写了,如果大家有兴趣或者有需要的话,自己可以计算研究一下,然后与大家分享。
下面是我写的一个关于现实系统运行时间差的完整程序,和大家分享一下,其中关于时间的计算有兴趣的同学可以自己研究优化一下,由于时间关系,我这里就直接贴代码了。
static QDateTime currentTime_1;
static int timeFlag=0;
void MainWindow::dateUpDate()
{
if(timeFlag==0)
{
currentTime_1=QDateTime::currentDateTime();
QTimer*timer=new QTimer(this);
connect(timer,SIGNAL(timeout()),
this,SLOT(display()));
timer->start(1000);//设置更新时间间隔
timeFlag=1;
}
}
void MainWindow::display()
{
QDateTime currentTime_2=QDateTime::currentDateTime();
ui->lbl_connectTime->setText("系统累计运行时间"
+QString::number(currentTime_1.msecsTo(currentTime_2)/3600000)+"小时:" +QString::number(currentTime_1.msecsTo(currentTime_2)%3600000/60000)+"分:"+QString::number(currentTime_1.msecsTo(currentTime_2)%60000/1000)+"秒");
}。