61常用控件_QDateTimeEdit的使用
目录
代码⽰例: 实现⽇期计算器
使用QDateEdit作为日期的微调框.
使用QTimeEdit作为时间的微调框.
使用QDateTimeEdit作为时间日期的微调框.
这几个控件用法非常相似,我们以QDateTimeEdit为例进行介绍.
QDateTimeEdit核心属性
属性 | 说明 |
---|---|
dateTime | 时间日期的值,形如 2000/1/1 0:00:00 |
date | 单纯日期的值,形如 2001/1/1 |
time | 单纯时间的值,形如 0:00:00 |
displayFormat | 时间日期格式,形如 yyyy/M/d H:mm - y 表示年份 - M 表示月份 - d 表示日期 - H 表示小时 - m 表示分钟 - s 表示秒 注意:这里的格式化符号的含义,不要记忆。不同语言 / 库的设定规则是存在差异的。一定是用的时候再去查。 |
minimumDateTime | 最小时间日期 |
maximumDateTime | 最大时间日期 |
timeSpec | - Qt::LocalTime:显示本地时间。 - Qt::UTC:显示协调世界时(UTC)。 - Qt::OffsetFromUTC:显示相对于 UTC 的偏移量 (时差)。 |
关于本地时间(LocalTime)和协调世界时(UTC)
UTC时间是一个基于原子钟的标准时间.不受地球的自转周期影响.和格林威治时间(GMT)是
非常接近的.科学家会通过精密的设备来测量并维护.
咱们的计算机内部使用的时间就是基于UTC时间.
本地时间则是基于不同的时区,对UTC时间做出了一些调整,比如咱们使用的北京时间,位于‘东八区",就需要在UTC时间基础上+8个小时的时差
核⼼信号
信号 | 说明 |
---|---|
dateChanged(QDate) | 日期改变时触发 |
timeChanged(QTime) | 时间改变时触发 |
dateTimeChanged(QDateTime) | 时间日期任意一个改变时触发 |
代码⽰例: 实现⽇期计算器

使用daysTo函数可以计算两个日期的天数.
使用secsTo函数可以计算两个时间的秒数.
通过(秒数/3600)换算成小时数,再余上24得到零几个小时.
使用QString::number 把整数转成QString进行拼接.


年份得是4位数字
2000年之前,当时的年份都是用2位数字来表示的
1998 -> 98 => 干年虫
当到2000,也就是00 当时的很多程序就都出bug了~~通过一些特殊字符来描述时间日期的格式
2023年01月01日
2023-01-01
2023/01/01
01/01/2023日常使用的时间日期的格式,没有一个统一的标准~~
这里哪个字母表示什么含义,这个事情千万不要背!!背容易背错
每次用,每次去查一下!!!
不同的语言,不同的库,这里的格式化字符的含义还不一样
有的是用M表示月份,m表示分钟
有的是用m表示月份,M表示分钟
有的是H表示小时,有的是用h
有的是用s表示秒,S表示毫秒
也有的是用S表示秒,s表示毫秒Qt::LocalTime:显示本地时间。
Qt::UTC:显示协调世界时 (UTC)。
UTC是标准时间,科学家通过原子钟~~
实际生活中,存在一个“时差的问题”
引入时差~~时差就是在标准时间基础上计算一个时间的差值~~
北京时间“东八区”
咱们用的localTime就是UTC 的基础上 +8 h
英国格林威治天文台~~(标准时间)
0点(他们是半夜),咱们是8点(咱们已经天亮了)一个国家南北地区,经纬度不同,也是有时差的
时间计算器,计算两个时间中间的间隔是多少天/多少小时~~
Time Edit
Date Edit
Date/Time Edit
QDateTime提供了两个函数:
daysTo计算两个时间的日期的差值.
secsTo计算两个时间的秒数的差值.计算相隔日期几天零几小时:
int days = (seconds / 3600) / 24
int hours =(seconds / 3600) % 24;
seconds是一个非常大的数字,这两个时间日期中间隔了多少秒~~
首先除以一个3600,换算成小时了.这两个时间中间隔了多少小时,
重点是关心,多出来的零头
比如这里的结果是100h(包含好几天了),重点是看,这里的零头是多少~~