QTime类

QTime类提供时钟时间函数。


Header:#include <QTime>
CMake:find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake:QT += core

注意:此类中的所有函数都是可重入(reentrant)的。


 【详细描述】

一个QTime对象包含一个时钟时间,它可以表示为自午夜以来的小时、分钟、秒和毫秒数。它提供了比较时间和通过增加毫秒数来操作时间的功能。QTime对象应该通过值传递,而不是通过对const的引用传递;他们只是简单地将int打包。

QTime使用24小时时钟格式;它没有AM/PM的概念。与QDateTime不同,QTime对时区或夏令时(DST)一无所知。QTime对象通常通过显式给出小时、分钟、秒和毫秒数来创建,或通过静态函数currentTime()来创建表示系统本地时间的QTime对象。

hour(), minute(), second()和 msec() 函数提供了对时间的小时、分钟、秒和毫秒数的访问。
toString() 函数以文本格式提供了相同的信息。
addSecs()和addMSecs() 函数提供的时间比给定时间晚给定秒数或毫秒数。相应地,可以使用secsTo() 或msecsTo()找到两次之间的秒数或毫秒数。

QTime提供了一整套运算符来比较两个QTime对象;较早的时间被认为比较晚的时间小;如果A.msecsTo(B)为正,则A<B。

QTime对象还可以使用fromString() 从文本创建,并使用toString()转换为字符串。所有字符串格式之间的转换都是使用C语言环境完成的。有关本地化转换,请参见QLocale。 ​

参见 QDate and QDateTime.


【公有函数】

QTime()

构造一个空时间对象。对于空时间isNull()返回true, isValid()返回false。如果需要归零时间,请使用QTime(0, 0)。有关一天的开始,参见QDate::startOfDay()。

QTime(int h, int m, int s = 0, int ms = 0)

用小时h、分钟m、秒s和毫秒ms构造一个时间。 h必须在0到23的范围内,m和s必须在0到59的范围内,ms必须在0到999的范围内。参见 isValid()。

QTimeaddMSecs(int ms) const
QTimeaddSecs(int s) const

返回一个QTime对象,该对象包含的时间比该对象的时间晚s/ms秒(如果s/ms为负数,则比该对象的时间早s/ms秒)。 请注意,如果时间超过午夜,时间将会结束。 如果时间无效,则返回空时间。

inthour() const
返回时间的小时部分(0到23)。 如果时间无效,则返回-1。
boolisNull() const
如果时间为空,则返回true(即QTime对象是默认构造函数构造的);否则返回false。空时间是无效时间。
boolisValid() const
如果时间有效,则返回true否则返回false。例如,时间23:30:55.746是有效的,但24:12:30是无效的。
intminute() const
返回时间的分钟部分(0到59)。 如果时间无效,则返回-1。
intmsec() const
返回时间的毫秒部分(0到999)。 如果时间无效,则返回-1。
intmsecsSinceStartOfDay() const
返回一天开始以来的毫秒数,即自00:00:00以来的毫秒数。
intmsecsTo(QTime t) const
返回从这个时间到t的毫秒数。如果t早于这个时间,则返回的毫秒数为负。 因为QTime测量一天中的时间,而一天有86400秒,所以结果总是在-86400000到86400000毫秒之间。 如果任一时间无效,则返回0。
intsecond() const
返回时间的第二部分(0到59)。 如果时间无效,则返回-1。
intsecsTo(QTime t) const

返回从这个时间到t的秒数。如果t早于这个时间,则返回的秒数为负数。 因为QTime测量一天中的时间,而一天有86400秒,所以结果总是在-86400和86400之间。 secsTo()不考虑任何毫秒。 如果任一时间无效,则返回0。

boolsetHMS(int h, int m, int s, int ms = 0)
将时间设置为小时h、分钟m、秒s和毫秒ms,h必须在0到23的范围内,m和s必须在0到59的范围内,ms必须在0到999的范围内。如果设置的时间有效返回true,否则返回false。
QStringtoString(QStringView format) const
QStringtoString(const QString &format) const

以字符串形式返回时间。format参数确定结果字符串的格式。

可以使用以下表达式:

h:没有前导零的小时(如果显示AM/PM,则为0到23或1到12)
hh:带前导零的小时(如果显示AM/PM,则为00至23或01至12)
H:没有前导零的小时(0到23,即使有AM/PM显示)
HH:带前导零点的小时(00到23,即使有AM/PM显示)
m:没有前导零的分钟(0到59)
mm:有前导零的分钟(00到59)
s:整秒,没有任何前导零(0到59)
ss:整秒,在适用的情况下以零开头(00到59)
z或zz:秒的小数部分,跟在小数点后面,不带尾随零。因此,“s.z”报告的秒数达毫秒精度,不带尾随零(0到999)。例如,“s.z”形式的四分之一秒为“0.25”。
zzz:秒的小数部分,精确到毫秒,含尾随零(000到999)。例如,四分之一秒在“ss.zzz”会产生“00.250”。
​AP或A:使用AM/PM显示。A/AP将由“AM”或“PM”代替。在本地化形式中(仅与QLocale::toString()相关),适合区域设置的文本被转换为大写。

ap或a:使用am/pm显示。a/ap将由“am”或“pm”代替。在本地化形式中(仅与QLocale::toString()相关),适合区域设置的文本被转换为小写。

aP或Ap:使用AM/PM显示(从6.3开始)。aP/Ap将被替换为“AM”或“PM”。在本地化形式中( 仅与QLocale::toString()相关),使用适合区域设置的文本(由QLocale::amText()或QLocale::pmText()返回)时不改变大小写。

t:时区缩写(例如“CEST”)。请注意,时区缩写不是唯一的。特别是toString() 无法解析这一点。

tt:时区相对于UTC的偏移量,小时和分钟之间没有冒号(例如“+0200“)。

ttt:时区相对于UTC的偏移量,在小时和分钟之间有一个冒号(例如“+02:00“)。

tttt:时区名称(例如“欧洲/柏林”)。请注意,这并不表示日期时间是夏令时还是标准时间,如果日期时间在一个小时内,并在两者之间转换,这可能会导致歧义。使用的名称是由 QTimeZone::displayName() 提供,类型为QTimeZone::LongName。这可能取决于使用的操作系统。

任何包含在单引号中的非空字符序列都将逐字包含在输出字符串中(去掉引号),即使它包含格式化字符。输出中的两个连续单引号 ("''") 被一个单引号替换。格式字符串中的所有其他字符都逐字包含在输出字符串中。

支持不带分隔符的格式(例如“ddMM”),但生成的字符串并不总是可靠可读的。例如,如果“dM”产生“212”,则可能意味着12月2日或2月21日。

格式字符串示例(假设QTime为14:13:09.042)
hh:mm:ss.zzz    14:13:09.042
h:m:s ap        2:13:9 pm
H:m:s a         14:13:9 pm

如果时间无效,将返回一个空字符串。

注意:要获取AM或PM的本地化形式(AP, ap, A, a, aP 或 Ap格式),请使用 QLocale::system().toString()。
注意:如果一个格式字符的重复次数超过了上表中使用它的最长表达式的次数,则该部分格式将被读取为多个表达式,它们之间没有分隔符;上面最长的,可能重复的次数与它的副本一样多,以一个可能是较短表达的残基结尾。因此,当08:00时的“HHHHH”将解释为“08088”。

QStringtoString(Qt::DateFormat format = Qt::TextDate) const

重载。以字符串形式返回时间。format参数确定字符串的格式。

如果format为Qt::TextDate,则字符串格式为HH:mm:ss;例如:午夜前1秒将是“23:59:59”。

如果format是Qt::ISODate,则字符串格式对应于日期表示的ISO 8601扩展规范,用HH:mm:ss表示。

若要在ISO 8601日期中包含毫秒,请使用Qt::ISODateWithMs格式,该格式对应于HH:mm:ss.zzz。

如果格式为Qt::RFC2822Date,则该字符串以RFC 2822兼容的方式进行格式化。这种格式的一个例子是“23:59:20”。

如果时间无效,将返回一个空字符串。


【静态公有成员】

QTimecurrentTime()
返回系统时钟报告的当前时间。 请注意,准确性取决于底层操作系统的准确性;并非所有系统都能提供1毫秒的精度。 此外,currentTime()只在每天增加;每当午夜过后,它将下降24小时;除此之外,如果出现夏令时转换,其变化可能与经过的时间不符。
QTimefromMSecsSinceStartOfDay(int msecs)
返回一个新的QTime实例,其时间设置为自一天开始以来的毫秒数,即自00:00:00开始。 如果毫秒不在有效范围内,将返回无效的QTime。
QTimefromString(const QString &string, Qt::DateFormat format = Qt::TextDate)
QTimefromString(QStringView string, Qt::DateFormat format = Qt::TextDate)
QTimefromString(QStringView string, QStringView format)
QTimefromString(const QString &string, QStringView format)
QTimefromString(const QString &string, const QString &format)

此函数多次重载,功能是使用给定格式将字符串中表示的时间返回为QTime,如果不可能,则返回无效时间。format可用表达式如下:

h:没有前导零的小时(如果显示AM/PM,则为0到23或1到12)
hh:带前导零的小时(如果显示AM/PM,则为00至23或01至12)
H:没有前导零的小时(0到23,即使有AM/PM显示)
HH:带前导零点的小时(00到23,即使有AM/PM显示)
m:没有前导零的分钟(0到59)
mm:有前导零的分钟(00到59)
s:整秒,没有任何前导零(0到59)
ss:整秒,在适用的情况下以零开头(00到59)
z或zz:秒的小数部分,跟在小数点后面,不带尾随零。因此,“s.z”报告的秒数达毫秒精度,不带尾随零(0到999)。例如,“s.z”形式的四分之一秒为“0.25”。
zzz:秒的小数部分,精确到毫秒,含尾随零(000到999)。例如,四分之一秒在“ss.zzz”会产生“00.250”。

AP, A, ap, a, aP, Ap:“AM”表示12:00之前的时间,而“PM”表示更晚的时间,不区分大小写。

所有其他输入字符将被视为文本。任何包含在单引号中的非空字符序列也将被视为(去掉引号)文本,而不会被解释为表达式。

如果不满足格式要求,将返回无效的QTime。不期望给出前导零(h、m、s和z)的表达式是贪婪的。这意味着它们将使用两位数(或三位,代表z),即使这会使它们超出可接受的值范围,并且为其他部分留下的位数太少。例如,以下字符串可能表示00:07:10,但m将抓取两位数,从而导致时间无效:

任何未在格式中表示的字段都将被设置为零。例如:

注意:如果要识别am或pm的本地化形式(ap、Ap、aP、AP、A或A格式),请使用 QLocale::system().toTime()。toTime()。

注意:如果格式字符的重复次数超过了上表中使用它的最长表达式的次数,则格式的这一部分将被视为几个表达式,它们之间没有分隔符;上面最长的表达式,可能重复的次数与它的副本一样多,以一个可能是较短表达式的残基结束。因此“HHHHH”将匹配“08088”或“080808”并将小时设置为8;如果时间字符串包含“070809”,它将“匹配”但产生不一致的结果,从而导致无效时间。

boolisValid(int h, int m, int s, int ms = 0)

重载。 如果指定的时间有效,则返回true否则返回false。 如果h在0到23的范围内,m和s在0到59的范围内,ms在0到999的范围内,则时间有效。


booloperator!=(QTime lhs, QTime rhs)
booloperator<(QTime lhs, QTime rhs)
QDataStream &operator<<(QDataStream &out, QTime time)
booloperator<=(QTime lhs, QTime rhs)
booloperator==(QTime lhs, QTime rhs)
booloperator>(QTime lhs, QTime rhs)
booloperator>=(QTime lhs, QTime rhs)
QDataStream &operator>>(QDataStream &in, QTime &time)

<<<返回根页面

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值