Qt:获取日期和时间
前言
一般而言,操作系统(Windows/Linux/Mac)的内核函数都会给出了日期时间的相关系统库函数,Qt在此基础上进行了封装,提供了获取时间和日期的3个相关类——QDateTime、QDate、QTime,使其在Qt内部空间之间的使用更加便捷。
QDateTime获取日期和时间
QDateTime顾名思义,获取日期和时间,调用静态成员函数可直接获取字符串值,同时可以控制显示格式:
QDateTime dateTime(QDateTime::currentDateTime());
QString qStr = dateTime.toString("yyy-MM-dd hh:mm::ss ddd");
显示效果如下:

其中,控制字符串的格式如下表:
| 格式 | 备注 |
|---|---|
| d | 天数,范围1~31 |
| dd | 天数,范围01~31,前缀自动补一位零 |
| ddd | 星期天数缩写,以本地操作系统为准(如,汉字的周一到周日,英文的Mon.到Sun.) |
| dddd | 星期天数全程,以本地操作系统为准(如,汉字的星期一到星期日,英文的Monday到Sunday) |
| M | 月数,范围1~12 |
| MM | 月数,范围01~12,自动补一位零 |
| MMM | 月数名称缩写,默认本地操作系统值(如,汉字的1月到12月,英文的Ja) |
| MMMM | 月数名称全程,默认本地操作系统值(如,汉字的一月到十二月) |
| yy | 年份的后两位,范围00~99 |
| yyyy | 年份的四位全称 |
| h | 没有补零的小时数,范围0~23或1 ~12 |
| hh | 自动补零的小时数,范围00~23或01 ~12 |
| H | 没有补零的小时数,范围0~23(即便12小时制也是如此) |
| HH | 自动补零的小时数,范围0~23(即便12小时制也是如此) |
| m | 分钟数,范围0~59 |
| mm | 自动补零分钟数,范围00~59 |
| s | 秒钟数,范围0~59 |
| ss | 自动补零秒钟数,范围00~59 |
| z | 秒钟的小数部分(毫秒),精确范围 0-999 |
| zzz | 秒钟的小数部分,自动补零3位,范围000-999 |
| AP(A) | 使用12小时制,显示AM/PM |
| ap(a) | 使用12小时制,显示am/pm |
| t | 时区 |
以上任意字段可以随机排序,没有任何限制,但是要注意有大小写之分。
QDate获取日期
QDate顾名思义,即获取日期。调用静态成员函数可直接获取日期年月日的整型值:
QDate date(QDate::currentDate());
int year = date.year();
int month = date.month();
int day = date.day();
QTime获取时间
QDate顾名思义,即获取时间。调用静态成员函数可直接获取时间时分秒的整型值:
QTime time(QTime::currentTime());
int hour = time.hour();
int minute = time.minute();
int second = time.second();
总结
QDateTime、QDate、QTime的强大不止于此,Qt官方提供了各种各种基于日期和时间的操作,如果感兴趣的话,可以从官方API或者源码的角度去学习和解读,在此不再累述。
赞 (0)
