时间类有三种:QTime 、QDate、QDateTime
QTime:(时间)
QTime 对象包含一个时钟时间,它可以表示为自午夜以来的小时、分钟、秒和毫秒数。它提供了用于比较时间和通过添加毫秒数来操作时间的功能。QTime使用24小时制格式;它没有AM/PM的概念。
构造具有小时h、分钟m、秒s和毫秒ms 的时间
常用的函数:
hour() | 小时 |
minute() | 分钟 |
second() | 秒数 |
msec() | 毫秒数 |
A.msecsTo(B) | 判断时间的大小 |
isNull() | 判断是否为空 |
addMsecs(intms) | 返回一个比该对象晚的(毫秒) |
addSecs(ints) | 返回一个比该对象晚的(秒) |
currentTime() | 当前时间 |
setHMS() | 设置时间 |
toString() | 设置输出格式 |
toString()格式的种类:
h | 显示小时(0-23),AM或PM的话(1-12) |
hh | 显示小时(00-23),AM或PM的话(01-12) |
H | 统一显示(0-23) |
HH | 统一显示(00-23) |
m | 显示分钟(0-59) |
mm | 显示分钟(00-59) |
s | 显示秒数(0-59) |
ss | 显示秒数(00-59) |
z | 显示毫秒数(0-999) |
zzz | 显示毫秒数(000-999) |
AP or A | 使用上午/下午显示。A/AP将被大写版本的QLocale::amText() 或QLocale::p mText() 取代。 |
ap or a | 使用上午/下午显示。a/ap将被QLocale::amText() 或 QLocale::p mText() 的小写版本所取代。 |
t | 时区 |
QTime T(10,10,10,10);
T.setHMS(20,20,20,200);//设置时间
T=T.currentTime();//获取当前时间
T.start();
qDebug()<<T;
T=T.addSecs(60);//加1分钟
T=T.addMSecs(100);//加100ms
qDebug()<<T.toString("hh::mm::ss::zzz");//显示内容
QDate:(日期)
QDate 对象表示特定日期,而不考虑日历、区域设置或创建时使用的其他设置或由系统提供的其他设置。它可以报告表示日与外推公历或作为QCalendar对象提供的任何日历相关的日子的年、月和日。
构造具有年月日的日期。
常用的函数:
date() | 天 |
mouth() | 月 |
year() | 年 |
setDate() | 设置日期 |
isValid() | 判断日期是否正确 |
isNull() | 判断日期是否为空 |
isLeapYear() | 是否为闰年 |
getDate() | 获取日期 |
currentDate() | 获取当前日期 |
toString() | 设置显示格式 |
toString()的格式有:
d | 显示天数(1-31) |
dd | 显示天数(01-31) |
ddd | 显示(Mon -Sun)周一到周日 |
dddd | 显示(Monday-Sunday)星期一到星期天 |
M | 显示月份(1-12) |
MM | 显示月份(01-12) |
MMM | 显示月份(Jan-Dec) |
MMMM | 显示月份(January-December) |
yy | 显示年份(00,99) |
yyyy | 显示年份(完整的年份) |
QDate date(10,10,10);//创建一个日期
qDebug()<<date.year()<<"年"<<date.month()<<"月"<<date.day()<<"日";//输出日期
date.setDate(2020,12,12);//设置日期
date=date.currentDate();//获取当前日期
qDebug()<<date.toString("yyyy::MM::dd");//设置输出类型
QDateTIme :(日期和时间)
QDateTime 对象对日历日期和时钟时间(“日期时间”)进行编码。它结合了QDate和QTime类的功能。它可以从系统时钟读取当前日期时间。它提供了用于比较日期时间和通过添加秒数、天数、月数或年数来操作日期时间的函数。
构造函数有多种,最常见的为第5种。
QDateTime DT(QDate(2020,20,20),QTime(11,11,11,100),Qt::TimeSpec::LocalTime);
// 日期 时间 日期和时间的格式
Qt::TimeSpec有以下四种:
Qt::LocalTime | 本地时间(默认) |
Qt::UTC | 协调世界时间 |
Qt::OffsetFromUTC | 与协调世界时相距的偏移量(以秒为单位) |
Qt::TimeZone | 命名时区 |
常见的函数:
date() | 日期 |
time() | 时间 |
isValid() | 判断是否符合规则 |
isNull() | 判断是否为空 |
setDate() | 设置日期 |
setTime() | 设置时间 |
toString() | 提供输出格式 |
currentDateTime() | 获取当前时间 |
currentDateTimeUtc() | 获取当前时间以utc为单位 |
daysTo() | 计算天数的差值 |
swap() | 交换日期(不会失败) |
QDateTime DT(QDate(2020,20,20),QTime(11,11,11,100),Qt::TimeSpec::LocalTime);
QDateTime DT1(DT);//创建一个新的时间
DT=DT.currentDateTime();//获取当前时间
DT.swap(DT1);//交换时间
qDebug()<<DT.date().year()<<"年"<<DT.date().month()<<"月"<<DT.date().day()<<"日"
<<DT.time().hour()<<"小时"<<DT.time().minute()<<"分钟"<<DT.time().second()<<"秒";
QAbstractSpinBox类是一个抽象基类,提供了一个数值设定框和一行编辑器来显示设定值。
以下是它的子类:
QDateTimeEdit | 显示时间和日期 |
QSpinBox | 显示整数 |
QDoubleSpinBox | 显示浮点数 |
一:QDateTimeEdit
QDateTimeEdit类,提供了一个可以编辑日期和时间的部件。
Time Edit | 显示时间 |
Date Ex | 显示日期 |
Date/Time Edit | 显示时间和日期 |
在ui界面中分别为:
1.QTimeEdit :时间显示器
构造函数为:
常用的函数:
setMinimumTime() | 设置最小时间 |
setMaximumTime() | 设置最大时间 |
setTime() | 设置默认事件 |
setDisplayFormat() | 设置输出风格 |
QTimeEdit *te=new QTimeEdit(this);
te->setMinimumTime(QTime(10,10,10,100));//设置最小时间
te->setMaximumTime(QTime(23,59,59,999));//设置最大时间
te->setTime(QTime(20,20,20,20));//设置初始时间
te->setDisplayFormat("hh时mm分钟ss秒");
te->move(100,100);
默认风格:
设定后的风格:
2.QDateEdit:日期显示器
常用的函数:
setMinimumDate() | 设置最小日期 |
setMinimumDate() | 设置最大日期 |
setDate() | 设置默认日期 |
setDisplayFormat() | 设置输出风格 |
QDateEdit *de=new QDateEdit(this);
de->move(100,100);
de->setDate(QDate(2020,10,10));//设置初始日期
de->setMaximumDate(QDate(2099,12,31));//最大日期
de->setMinimumDate(QDate(2020,1,1));//最小日期
de->setDisplayFormat("yyyy年MM月dd日");
默认格式:
设置后的格式:
3.QDateTimeEdit:时间日期显示器
构造函数:
常用的一些函数:
setDateTime() | 设置时间 |
setDisplayFromat() | 设置显示格式 |
setCalendarPopup() | 设置是否显示日历 |
设置最大最小日期和时间就不列举了 |
QDateTimeEdit *dte=new QDateTimeEdit(this);
dte->setDateTime(QDateTime(QDate(2020,20,20),QTime(20,20,20,200)));//设置时间日期
dte->setDateTime(QDateTime::currentDateTime());//设置当前时间
dte->setDisplayFormat("yyyy年MM月dd日 ddd HH时mm分ss秒");//设置格式
dte->setCalendarPopup(true);//弹出日历窗口