【qt】一次性讲清楚日期和时间

时间日期

  • 一.QTime类
    • 1.初始化
    • 2.获取当前时间
    • 3.获取 小时 分钟 秒 毫秒
    • 4.增加时间
    • 5.间隔时间
    • 6.字符串转时间
    • 7.时间转字符串
  • 二.QDate类
    • 1.初始化
    • 2.获取当前日期
    • 3.设置日期
    • 4.获取 年 月 日
    • 5.各种小接口
    • 6.增加日期
    • 7.日期间隔
    • 8.字符串转日期
    • 9.日期转字符串
  • 三.QDateTime类
    • 1.初始化
    • 2.设置日期时间
    • 3.获取当前时间
    • 4.增加时间
    • 5.获取日期和时间
    • 6.日期时间间隔
    • 7.字符串转日期时间
    • 8.日期时间转字符串
  • 四.时间组件
    • 1.综合使用案例
  • 五.总结

一.QTime类

1.初始化

可以直接构造函数初始化,时 分 秒 毫秒

#include <QTime>
...
QTime time(8,29,24,234);
qDebug()<<time;

运行结果:
在这里插入图片描述

2.获取当前时间

可以用QTime的静态方法**currentTime()**来获取当前的时间

time=QTime::currentTime();
qDebug()<<time;

运行结果:
在这里插入图片描述
哈哈,被你们发现我现在在写博客了。

3.获取 小时 分钟 秒 毫秒

可以用相应的接口来获取

    int h=time.hour();int m=time.minute();int s=time.second();int ms=time.msec();qDebug()<<h<<m<<s<<ms;

运行结果:
在这里插入图片描述

4.增加时间

有的时候我们需要对时间来进行修改,可以用到接口addSecs()
这个是增加秒,3600就相当于一个小时。

    qDebug()<<time;time=time.addSecs(3600);qDebug()<<time;

运行结果:
在这里插入图片描述
同时还可以负数就是返方向的钟

    qDebug()<<time;time=time.addSecs(-3600);qDebug()<<time;

运行结果:
在这里插入图片描述

5.间隔时间

有的时间我们需要来算时间差,就可以用到secsTo这个接口,当然这个是以秒来计算的。

    QTime time1(12,28,12,23);qDebug()<<time.secsTo(time1);

运行结果:
在这里插入图片描述

6.字符串转时间

对于qt的界面设计,我们还是要知道字符串如何转到时间,可以用QTime的静态方法fromString接口。
可以使用通配符 h m s z 对应相应的时间,一位对一个

QTime time2=QTime::fromString("9点23分51秒237毫秒","h点mm分ss秒zzz毫秒");
qDebug()<<time2;

运行结果:
在这里插入图片描述

7.时间转字符串

同理,时间转字符串我们也要知道,用toString这个接口来实现。

QString ret=time2.toString();
qDebug()<<ret;

运行结果:
在这里插入图片描述
当然也可以用通配符来格式化

QString ret=time2.toString("h小时mm分ss秒zzz毫秒");
qDebug()<<ret;

运行结果:
在这里插入图片描述

二.QDate类

有了QTime的学习,QDate其实基本一样,咱们也来过一遍吧!

1.初始化

QDate date(2024,5,15);
qDebug()<<date;

运行结果:
在这里插入图片描述

2.获取当前日期

date=QDate::currentDate();
qDebug()<<date;

运行结果:
在这里插入图片描述
让你们知道我的时间了,哈哈哈

3.设置日期

如果我想回到高考,我不能时光倒流,但是我可以修改时间,嘿嘿嘿,在程序的世界里,我就是上帝。

date.setDate(2022,6,7);
qDebug()<<date;

运行结果:
在这里插入图片描述

4.获取 年 月 日

    int y=date.year();int m=date.month();int d=date.day();qDebug()<<y<<m<<d;

运行结果:
在这里插入图片描述

5.各种小接口

    date=QDate::currentDate();qDebug()<<date;qDebug()<<date.dayOfYear();//这一年的第几天qDebug()<<date.dayOfWeek();//这一天是星期几(0~6)0是星期天qDebug()<<date.daysInYear();//这一年有多少天qDebug()<<date.daysInMonth();//这一个月有多少天qDebug()<<date.weekNumber();//这个是这一年的第几周

运行结果:
在这里插入图片描述
你也来试试看吧!

6.增加日期

同样的,日期也可以通过addDays接口,只不过是以天为单位

qDebug()<<date;
date=date.addDays(6);
qDebug()<<date;

运行结果:
在这里插入图片描述

7.日期间隔

接口daysTo

QDate date1=QDate::currentDate();
qDebug()<<date1.daysTo(date);

运行结果:
在这里插入图片描述

8.字符串转日期

与时间同样的接口fromString
通配符为 y M d,大写的M是为了区分小写的秒 m

QDate date2=QDate::fromString("2024年5月20日","yyyy年M月dd日");
qDebug()<<date2;

运行结果:
在这里插入图片描述

9.日期转字符串

不用通配符的话,会生成一个默认的打印格式

QString ret=date2.toString();
qDebug()<<ret;

运行结果:
在这里插入图片描述
用通配符来进行格式化

QString ret=date2.toString("yyyy年M月dd日");
qDebug()<<ret;

运行结果:
在这里插入图片描述

三.QDateTime类

1.初始化

可以用QTime和QDate来进行初始化!

QTime time(14,21,22);
QDate date(2024,5,15);
QDateTime dt(date,time);
qDebug()<<dt;

运行结果:
在这里插入图片描述

2.设置日期时间

接口基本一样,那我就展示一下啦

    time=QTime::currentTime();date=QDate::currentDate();dt.setDate(date);dt.setTime(time);qDebug()<<dt;

运行结果:
在这里插入图片描述
又暴露我的时间了,刚刚睡醒哈哈!

3.获取当前时间

dt=QDateTime::currentDateTime();
qDebug()<<dt;

运行结果:
在这里插入图片描述

4.增加时间

qDebug()<<dt.addDays(10);

运行结果:
在这里插入图片描述

5.获取日期和时间

    time=dt.time();date=dt.date();qDebug()<<time;qDebug()<<date;

运行结果:
在这里插入图片描述

6.日期时间间隔

qDebug()<<dt1.daysTo(dt);

运行结果:
在这里插入图片描述

7.字符串转日期时间

QDateTime dt2=QDateTime::fromString("2024年5月16号9点23分12秒","yyyy年M月dd号h点mm分ss秒");
qDebug()<<dt2;

运行结果:
在这里插入图片描述

8.日期时间转字符串

默认的字符串

QString ret=dt1.toString();
qDebug()<<ret;

运行结果:
在这里插入图片描述
通过通配符来进行转换

QString ret=dt1.toString("yyyy年M月dd日h点mm分ss秒");
qDebug()<<ret;

运行结果:
在这里插入图片描述

四.时间组件

1.综合使用案例

目标效果:
在这里插入图片描述

老规矩,先随便拖
在这里插入图片描述
说一下这里用到了那些主要组件,主要的,当然是我们这节课学的了。
Time Edit Date Edit DateTime Edit这几个主要的,可以用Group Box来分组。
然后再对组内的组件进行水平布局,然后对整个窗口进行垂直布局
按钮可以设置一个最大距离
在这里插入图片描述
可以设置只读模式

在这里插入图片描述
对spin box加后缀
在这里插入图片描述
可以对Date 和 DateTime组件添加日历
在这里插入图片描述
还有记得改名字哦。
接下来开始转到槽:
对获取当前时间按钮的槽函数

void MainWindow::on_pushButton_clicked()
{ui->timeEditStart->setTime(QTime::currentTime());ui->dateEditStart->setDate(QDate::currentDate());ui->dateTimeEditStart->setDateTime(QDateTime::currentDateTime());
}

对3个SpinBox进行转到槽:

void MainWindow::on_spinBoxTime_valueChanged(int arg1)
{QTime time=ui->timeEditStart->time();time=time.addSecs(arg1*3600);ui->timeEditEnd->setTime(time);
}void MainWindow::on_spinBoxDate_valueChanged(int arg1)
{QDate date=ui->dateEditStart->date();date=date.addDays(arg1);ui->dateEditEnd->setDate(date);
}void MainWindow::on_spinBoxDateTime_valueChanged(int arg1)
{QDateTime dt=ui->dateTimeEditStart->dateTime();dt=dt.addDays(arg1);ui->dateTimeEditEnd->setDateTime(dt);
}

原理都是,先拿到开始时间,然后增加SpinBox里面的时间值,再设置对应的时间即可。

运行结果:
在这里插入图片描述

五.总结

对于时间的处理主要就是QTime QDate QDateTime
这三个的接口又基本相似,我们可以记住一套接口,主要还是根据我们的用法来记忆。
可以看看目录来回忆回忆!

最近确实有点赶了,杂事有点多,静不下来,下次要注意注意。

长风破浪会有时,直挂云帆济沧海

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/704759.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【SpringBoot】解锁后端测试新境界:学习Mockito与MockMvc的单元测试魔法

文章目录 前言&#xff1a;Java常见的单元测试框架一.Junit5基础二.SpringBoot项目单元测试1.添加依赖2.SpringBoot单元测试标准结构3.SpringBoot单元测试常用注解 三.单元测试中如何注入依赖对象1.真实注入&#xff08;AutoWired、 Resource&#xff09;2.Mock注入2.1.前言2.2…

第十四届蓝桥杯大赛软件赛国赛C/C++ 大学 B 组 拼数字

//bfs只能过40%。 #include<bits/stdc.h> using namespace std; #define int long long int a,b,c,dp[2028]; struct s {int x,y,z;string m; }; map<vector<int>,int>k; signed main() {ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>a…

不相交集合的数据结构

一、不相交集合的操作 不相交集合的数据结构维护了一组不相交动态集的集合 &#xff0c;用集合中的某个成员作为代表标识集合。 集合在没有修改的情况下每次访问代表得到的答案是相同的&#xff0c;此外在其它一些应用中&#xff0c;可能按照规定选择集合的代表&#xff0c;例如…

如何使用JMeter测试导入接口/导出接口?

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号&#xff1a;互联网杂货铺&#xff0c;回复1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 今天上班&#xff0c;被开发问了一个问题&#xff1a;JM…

设计非递归算法,编程:在二叉排序树中,打印关键码a, b的公共祖先。注:例,若a是b的祖先,则a不算作公共祖先。反之亦然。

二叉排序树&#xff1a; 代码&#xff1a; #include <iostream> using namespace std;// 定义二叉树节点结构 typedef struct BTNode {char show;struct BTNode* left;struct BTNode* right; } BTNode;// 非递归插入节点的函数 BTNode* insertNode(BTNode* root, char k…

【C -> Cpp】由C迈向Cpp (6):静态、友元和内部类

标题&#xff1a;【C -&#xff1e; Cpp】由C迈向Cpp &#xff08;6&#xff09;&#xff1a;静态、友元和内部类 水墨不写bug &#xff08;图片来源于网络&#xff09; 目录 &#xff08;一&#xff09;静态成员 &#xff08;二&#xff09;友元 &#xff08;三&#xff09…

【AI+漫画】程序员小李解决疑难杂症BUG的日常

周末花了点时间制作的AI漫画。 感慨一句&#xff0c;程序人生, 相伴随行。 原文链接&#xff1a;【AI漫画】程序员小李解决疑难杂症BUG的日常

ADS使用记录之使用RFPro进行版图联合仿真

ADS使用记录之使用RFPro进行版图联合仿真 在ADS中&#xff0c;我们往往使用EM仿真来明确电路的实际性能&#xff0c;但是常规的方法我们只会得到S参数&#xff0c;对于场还有电路的电流分布往往不进行检查。但是在实际中&#xff0c;观察场和电流分布是非常有意义的&#xff0…

2024042001-计算机网络 - 物理层

计算机网络 - 物理层 计算机网络 - 物理层 通信方式带通调制 通信方式 根据信息在传输线上的传送方向&#xff0c;分为以下三种通信方式&#xff1a; 单工通信&#xff1a;单向传输半双工通信&#xff1a;双向交替传输全双工通信&#xff1a;双向同时传输 带通调制 模拟信号…

栈和队列(1)

现在是个激动人心的时刻&#xff0c;因为我们来到了栈和队列的章节。 栈是一种特殊的线性表&#xff0c;只允许在一端进行插入和删除操作。进入数据插入和删除的一端叫作栈顶&#xff0c;另一端称为栈底。具有后进先出的特点。 压栈&#xff1a;数据的插入操作叫作进栈/入栈/…

InfiniGate自研网关实现五

17.核心通信组件管理和处理服务映射 引入模块api-gateway-core 到 api-gateway-assist 中进行创建和使用&#xff0c;并拉取自注册中心的映射信息注册到本地的网关通信组件中。 第17节是在第15节的基础上继续完善服务发现的相关功能&#xff0c;把从注册中心拉取的网关映射信…

fastjson1.2.68对于文件操作的分析最全

fastjson1.2.68对于文件操作的分析 前言分析复制文件写入文件读取文件分析poc拓宽场景极限环境poc优化修改再次优化poc的分析 前言 这次分析也是分析了很久&#xff0c;因为每个链子都是自己去跟着分析了的&#xff0c;然后主要是去学习了一下怎么去挖链子 分析 前面漏洞复现…