我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Qt QDateTime计算时间差的实现示例

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Qt QDateTime计算时间差的实现示例

前言

如果一个程序比较耗时,我们又想知道性能的瓶颈在哪里,然后针对性的进行优化。这里暂时不考虑多线程的情况。Qt中与时间相关的类大概有以下几个:
1.QDateTime
2.QTime
3.QDate
4.QTimeZone
5.QCalendar
是不是有点头大,反正我是懵圈了。。。。。。
这篇文章主要聊聊QDateTime

一、QDateTime

QDateTime官方文档

二、常用的函数

主要有以下常用函数

从官网描述来看大概意思:QDateTime 对象编码日历日期和时钟时间(“日期时间”)。它结合了QDate和QTime类的特性。它可以从系统时钟中读取当前日期时间。它提供了比较日期时间和通过添加秒数、天数、月数或年数来操作日期时间的函数。

1.示例代码

#include "MainWindow.h"

#include <QApplication>
#include <QTime>
#include <QDateTime>
#include <QDebug>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
//    w.show();


//    int iCount[10000000] = {1};
    int *pAllocation = new int[10000000];
    int item = 0;
    QDateTime time1 = QDateTime::currentDateTime();
    QTime startTime = QTime::currentTime();
    for(quint64 i=0; i<9000000000; i++)
    {
        item = i;
    }

    QDateTime time2 = QDateTime::currentDateTime();
    int days = time1.daysTo(time2);
    qDebug() << "Cast days=" << days;

    quint64 sTime = time1.toTime_t();
    quint64 eTime = time2.toTime_t();

    quint64 costTime = eTime - sTime;
    qDebug() << "eTime - sTime=" << costTime;
    QDateTime elapseTime = QDateTime::fromTime_t(costTime);
    qDebug() << "Elapsed time=" << elapseTime;

    QTime endTime = QTime::currentTime();



    int elapsed = startTime.secsTo(endTime);
    qDebug() << startTime.secsTo(endTime);


//    int ndaysec = 24*60*60;
//    qDebug() << "Day = " << (etime - stime)/(ndaysec) + ((etime - stime)%(ndaysec)+(ndaysec-1))/(ndaysec) - 1;

    QDateTime dateTime;
    QString elapsedTime = dateTime.fromTime_t(elapsed).toString("yyyy-MM-dd hh:mm:ss[:zzz]");
    qDebug() << "Cast time=" << elapsedTime;

    return a.exec();
}

注意如果考虑毫秒、微秒、纳秒级在计算时间差的时候,建议使用quint64,否则很容易溢出。
另外boost当中的chrono也非常好用,而且精确度可以达到纳秒级,当然这里是考虑了cpu的时钟频率。

#include <iostream>
#define BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG		// 必须在头文件之前定义宏,否则无效!!!
#include <boost/date_time/posix_time/posix_time.hpp>
 
int main(int argc, char **argv) {
	// 第四个参数,如果精确度是微秒,单位就是微秒,如果精确度是纳秒,单位就是纳秒
	boost::posix_time::time_duration td(1, 10, 30, 1000);				// 01:10:30
	// 查看当前的精确度
	if (td.resolution() == boost::date_time::nano) printf("精确度:纳秒\n");
	else printf("精确度:微秒\n");
	// 返回秒的小数部分的位数(微秒6位,纳秒9位)
	std::cout << td.num_fractional_digits() << std::endl;
 
	// 对于以下输出,默认微秒精度输出:01:10:30.001000  纳秒精度输出:01:10:30.000001000
	std::cout << td << std::endl;
	// 对于以下输出,在纳秒精度下,微秒会被忽略(微秒:4230001 纳秒:4230000)
	std::cout << td.total_milliseconds() << std::endl;
	// 下面的这个方法,就是输出小数点后面的数值,单位随精确度变化
	std::cout << td.fractional_seconds() << std::endl;
	return 0;
}

2.日期与时间戳互转

QString starttime ="2022-11-11 12:00:00";
QString endtime = "2022-11-13 12:00:01";
QDateTime start = QDateTime::fromString(starttime, "yyyy-MM-dd hh:mm:ss");
QDateTime end = QDateTime::fromString(endtime, "yyyy-MM-dd hh:mm:ss");
uint stime = start.toTime_t();
uint etime = end.toTime_t();

QDateTime time = QDateTime::fromTime_t(timeT); 

到此这篇关于Qt QDateTime计算时间差的实现示例的文章就介绍到这了,更多相关Qt QDateTime计算时间差内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Qt QDateTime计算时间差的实现示例

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Qt QDateTime计算时间差的实现示例

本文主要介绍了Qt QDateTime计算时间差的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-17

SQL Server计算两个时间相差的示例代码

目录1、计算两个时间字符串之间的差值2、字符串转换成日期/时间类型3、计算两个日期和时间之间的差值在 SQL Server 中,计算两个时间字符串之间的差值首先将这些字符串转换成日期/时间类型(如 datetime 或 datetime2
SQL Server计算两个时间相差的示例代码
2024-10-18

Java计算两个时间段的差的实例详解

在本篇内容中,我们给大家整理了关于Java计算两个时间段的差的实例内容,并做了详细分析,有需要的朋友们学习下。
2022-11-13

Python实现计算两个时间之间相差天数的方法

本文实例讲述了Python实现计算两个时间之间相差天数的方法。分享给大家供大家参考,具体如下:#-*- encoding:UTF-8 -*- from datetime import date import time nowtime = d
2022-06-04

利用Java怎么实现计算两个日期的时间差

本篇文章给大家分享的是有关利用Java怎么实现计算两个日期的时间差,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。具体如下:/*** 获取两个日期相差的月数* @param d1
2023-05-31

利用java如何实现计算两个日期的时间差

今天就跟大家聊聊有关利用java如何实现计算两个日期的时间差,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。java计算两个日期中间的时间其中在数据库中有一个字段为datetime类型
2023-05-31

Python如何实现自动计算特定格式的时间差

这篇文章主要讲解了“Python如何实现自动计算特定格式的时间差”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python如何实现自动计算特定格式的时间差”吧!功能输入一个特定格式的时间戳,
2023-06-22

利用Java如何实现计算两个程序运行的时间差

这期内容当中小编将会给大家带来有关利用Java如何实现计算两个程序运行的时间差,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、获取系统当前时间long startTime = System.curren
2023-05-31

android计时器,时间计算器的实现方法

需求:默认为"00:00:00",点击开始按钮时清零后开始计时,出现如10:28:34。点击停止的时候停止计时。问题:使用Calendar DateFormat的方法,不设置时区获取到的小时是本地时区的(东八区的就是8),设置成GMT标准时
2022-06-06

PHP时间函数简介:实现时间计算和日期显示

PHP时间函数简介:实现时间计算和日期显示在PHP中,时间函数是非常重要的,可以帮助我们进行时间的计算、日期的显示以及各种时间操作。本文将介绍几个常用的PHP时间函数,并给出具体的代码示例,帮助读者更好地了解和使用这些函数。1. dat
PHP时间函数简介:实现时间计算和日期显示
2024-03-01

C++实现统计代码运行时间的示例详解

这篇文章主要为大家详细介绍了C++一个有趣的小项目——统计代码运行时间,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
2023-05-19

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录