QT时间相关的使用(日期相减问题)

原文地址::https://blog.csdn.net/qq_18286031/article/details/78538769

 

Qt两个日期相减的问题

首先,由日期与时间戳的相互转换

 

 

 
  1. QDateTime time = QDateTime::currentDateTime(); //获取当前时间

  2. int timeT = time.toTime_t(); //将当前时间转为时间戳


将一定格式的日期转换为时间戳

 

 

 
  1. QString starttime ="2017-11-11 12:00:00";

  2. QString endtime = "2017-11-13 12:00:01";

  3. QDateTime start = QDateTime::fromString(starttime, "yyyy-MM-dd hh:mm:ss");

  4. QDateTime end = QDateTime::fromString(endtime, "yyyy-MM-dd hh:mm:ss");

  5. uint stime = start.toTime_t();

  6. uint etime = end.toTime_t();


与toTime_t()功能相反的是fromTime_t(),把时间戳转为QDateTime类型。因为这个方法是静态的,所以使用方法为

 

 

QDateTime time = QDateTime::fromTime_t(timeT);  


两个日期相隔的天数由时间戳来相减得到

 

 

 
  1. int ndaysec = 24*60*60;

  2. qDebug() << "Day = " << (etime - stime)/(ndaysec) + ((etime - stime)%(ndaysec)+(ndaysec-1))/(ndaysec) - 1;

注意:上面的计算中,天数相隔时间差24小时内为0天,可以这样理解,26小时大于24小时(一天),那么他们相差1天了,如果24小时内为1天计算,26小时大于24小时,那么就将后面的减一去掉就可以了。

 

Qt获取前几天的时间

 

 
  1. QDateTime time = QDateTime::currentDateTime();//获取系统现在的时间

  2. QString str = time.toString("yyyy-MM-dd"); //设置显示格式

  3. QString BeforeDaystr=time.addDays(-1).toString("yyyy-mm-dd");//获取前一天时间


 

 

具体上代码:

 

 
  1. #include <QCoreApplication>

  2. #include <QString>

  3. #include <QDateTime>

  4. #include <QTime>

  5. #include <QDebug>

  6.  
  7. int main(int argc, char *argv[])

  8. {

  9. QCoreApplication a(argc, argv);

  10. QString starttime ="2017-11-11 12:00:00";

  11. QString endtime = "2017-11-13 12:00:01";

  12. QDateTime start = QDateTime::fromString(starttime, "yyyy-MM-dd hh:mm:ss");

  13. QDateTime end = QDateTime::fromString(endtime, "yyyy-MM-dd hh:mm:ss");

  14. uint stime = start.toTime_t();

  15. uint etime = end.toTime_t();

  16. qDebug() << "starttime" << starttime;

  17. qDebug() << "endtime" << endtime;

  18. qDebug() << "......................";

  19.  
  20. qDebug() << "etime" << etime;

  21. qDebug() << "stime" << stime;

  22. qDebug() << "etime - stime" << etime - stime;

  23.  
  24. int ndaysec = 24*60*60;

  25. qDebug() << "Day = " << (etime - stime)/(ndaysec) + ((etime - stime)%(ndaysec)+(ndaysec-1))/(ndaysec) - 1;

  26.  
  27. return a.exec();

  28. }

 

结果如下:

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值