QTime理论总结
- 一、概述
- 二、使用
- 1. 属性获取
- 2. 时间加减
- 3. 字符串与QTime互转
一、概述
QTime对象包含一个时钟时间,可以用小时数、分钟数、秒数和毫秒数来表示。它提供了比较时间和通过添加毫秒数来操作时间的函数。
QTime使用24小时时钟格式;它没有AM/PM的概念。与QDateTime不同,QTime对时区或夏令时(daylight saving time, DST) 不支持。
二、使用
通常,创建QTime对象要么显式地给出小时数、分钟数、秒数和毫秒数,要么使用静态函数currentTime(),它创建一个表示系统本地时间的QTime对象。,下面就是这个构造函数
1. 属性获取
hour()、minute()、second()和msec()函数提供了对小时数、分钟数、秒数和毫秒数的访问。toString()函数以文本形式提供了相同的信息。
- hour() 小时的 范围是 0-23
- minute() 分钟的 范围是 0 to 59
- second() 秒钟的 范围是 0 to 59
- msec() 毫钟的 范围是 0 to 999
2. 时间加减
addSecs()和 addMSecs()函 数提供了比给定时间晚于给定秒数或毫秒数的时间。相应地,可以使用secsTo()或msecsTo()来查看两次之间的秒数或毫秒数。
简单的例子
QTime n(14, 0, 0); // n == 14:00:00
QTime t;
t = n.addSecs(70); // t == 14:01:10
t = n.addSecs(-70); // t == 13:58:50
t = n.addSecs(10 * 60 * 60 + 5); // t == 00:00:05
t = n.addSecs(-15 * 60 * 60); // t == 23:00:00
QTime提供了一套完整的操作符来比较两个QTime对象;较早的时间被认为比较晚的时间小;如果A.msecsTo(B)为正数,则A < B。
3. 字符串与QTime互转
通用转换表
符号 | 含义 |
---|---|
h | 没有前导零的小时数(0到23或1到12如果AM/PM显示) |
hh | 以零开头的小时数(如果显示AM/PM,则为00到23或01到12) |
H | 不以0开头的小时数(0到23,即使有AM/PM显示) |
HH | 以0开头的小时数(00到23,即使有AM/PM显示) |
m | 没有0开头的分钟(0到59) |
mm | 以0开头的分钟(00到59) |
s | 整个秒,没有任何前导0(0到59) |
ss | 整秒,在适用的情况下以0开头(00到59) |
z | 小数秒的小数部分,在小数点之后,后面没有零(0到999)因此,“s.z”报告了完全可用(毫秒)精度的秒数,并且没有末尾的零。 |
zzz | 秒的小数部分,精确到毫秒,在适当的情况下包括后面的零(000到999)。 |
AP或A | 使用AM/PM显示。A/AP将被替换为大写版本的QLocale::amText()或QLocale::pmText()。 |
ap或a | 使用am/pm显示。a/ap将被小写版本的QLocale::amText()或QLocale::pmText()替换。 |
t | 时区(例如“CEST”) |
1. QTime 转字符串:
- QString QTime::toString(const QString &format) const
用单引号括起来的任何字符序列都会原封不动地包含在输出字符串中(去掉引号),即使其中包含格式化字符。在输出中,两个连续的单引号(’ ')被替换为单引号。格式字符串中的所有其他字符都将逐字包含在输出字符串中。
没有分隔符的格式(例如:“ddMM”)是支持的,但必须谨慎使用,因为结果字符串并不总是可靠可读的(例如,如果“dM”产生“212”,它可能意味着12月2日或2月21日)。
格式化字符串示例(假设QTime是14:13:09.042,系统区域设置是en_US)
- 转换完的结果:
hh:mm:ss.zzz <-> 14:13:09.042
h: m:s ap <-> 2:13:9 pm
H: m:s a <-> 14:13:9 pm
2. 字符串转QTime :
QTime QTime::fromString(const QString &string, const QString &format)
也会用的到那个通用转换表
例子很简单,所有其他输入字符都将被视为文本。用单引号括起来的任何字符序列也将被视为文本,而不会用作表达式。
//这里用了很多的占位符,比如" 、'mm'、car
QTime time = QTime::fromString("1mm12car00", "m'mm'hcarss");
// time is 12:01.00
QTime time = QTime::fromString("00:710", "hh:ms"); // invalid
QTime time = QTime::fromString("1.30", "m.s");
// time is 00:01:30.000