时间日期
- 一.QTime类
- 1.初始化
- 2.获取当前时间
- 3.获取 小时 分钟 秒 毫秒
- 4.增加时间
- 5.间隔时间
- 6.字符串转时间
- 7.时间转字符串
- 二.QDate类
- 1.初始化
- 2.获取当前日期
- 3.设置日期
- 4.获取 年 月 日
- 5.各种小接口
- 6.增加日期
- 7.日期间隔
- 8.字符串转日期
- 9.日期转字符串
- 三.QDateTime类
- 1.初始化
- 2.设置日期时间
- 3.获取当前时间
- 4.增加时间
- 5.获取日期和时间
- 6.日期时间间隔
- 7.字符串转日期时间
- 8.日期时间转字符串
- 四.时间组件
- 1.综合使用案例
- 五.总结
一.QTime类
1.初始化
可以直接构造函数初始化,时 分 秒 毫秒
#include <QTime>
...
QTime time(8,29,24,234);
qDebug()<<time;
运行结果:
2.获取当前时间
可以用QTime的静态方法**currentTime()**来获取当前的时间
time=QTime::currentTime();
qDebug()<<time;
运行结果:
哈哈,被你们发现我现在在写博客了。
3.获取 小时 分钟 秒 毫秒
可以用相应的接口来获取
int h=time.hour();int m=time.minute();int s=time.second();int ms=time.msec();qDebug()<<h<<m<<s<<ms;
运行结果:
4.增加时间
有的时候我们需要对时间来进行修改,可以用到接口addSecs()
这个是增加秒,3600就相当于一个小时。
qDebug()<<time;time=time.addSecs(3600);qDebug()<<time;
运行结果:
同时还可以负数就是返方向的钟
qDebug()<<time;time=time.addSecs(-3600);qDebug()<<time;
运行结果:
5.间隔时间
有的时间我们需要来算时间差,就可以用到secsTo这个接口,当然这个是以秒来计算的。
QTime time1(12,28,12,23);qDebug()<<time.secsTo(time1);
运行结果:
6.字符串转时间
对于qt的界面设计,我们还是要知道字符串如何转到时间,可以用QTime的静态方法fromString接口。
可以使用通配符 h m s z 对应相应的时间,一位对一个
QTime time2=QTime::fromString("9点23分51秒237毫秒","h点mm分ss秒zzz毫秒");
qDebug()<<time2;
运行结果:
7.时间转字符串
同理,时间转字符串我们也要知道,用toString这个接口来实现。
QString ret=time2.toString();
qDebug()<<ret;
运行结果:
当然也可以用通配符来格式化
QString ret=time2.toString("h小时mm分ss秒zzz毫秒");
qDebug()<<ret;
运行结果:
二.QDate类
有了QTime的学习,QDate其实基本一样,咱们也来过一遍吧!
1.初始化
QDate date(2024,5,15);
qDebug()<<date;
运行结果:
2.获取当前日期
date=QDate::currentDate();
qDebug()<<date;
运行结果:
让你们知道我的时间了,哈哈哈
3.设置日期
如果我想回到高考,我不能时光倒流,但是我可以修改时间,嘿嘿嘿,在程序的世界里,我就是上帝。
date.setDate(2022,6,7);
qDebug()<<date;
运行结果:
4.获取 年 月 日
int y=date.year();int m=date.month();int d=date.day();qDebug()<<y<<m<<d;
运行结果:
5.各种小接口
date=QDate::currentDate();qDebug()<<date;qDebug()<<date.dayOfYear();//这一年的第几天qDebug()<<date.dayOfWeek();//这一天是星期几(0~6)0是星期天qDebug()<<date.daysInYear();//这一年有多少天qDebug()<<date.daysInMonth();//这一个月有多少天qDebug()<<date.weekNumber();//这个是这一年的第几周
运行结果:
你也来试试看吧!
6.增加日期
同样的,日期也可以通过addDays接口,只不过是以天为单位
qDebug()<<date;
date=date.addDays(6);
qDebug()<<date;
运行结果:
7.日期间隔
接口daysTo
QDate date1=QDate::currentDate();
qDebug()<<date1.daysTo(date);
运行结果:
8.字符串转日期
与时间同样的接口fromString
通配符为 y M d,大写的M是为了区分小写的秒 m
QDate date2=QDate::fromString("2024年5月20日","yyyy年M月dd日");
qDebug()<<date2;
运行结果:
9.日期转字符串
不用通配符的话,会生成一个默认的打印格式
QString ret=date2.toString();
qDebug()<<ret;
运行结果:
用通配符来进行格式化
QString ret=date2.toString("yyyy年M月dd日");
qDebug()<<ret;
运行结果:
三.QDateTime类
1.初始化
可以用QTime和QDate来进行初始化!
QTime time(14,21,22);
QDate date(2024,5,15);
QDateTime dt(date,time);
qDebug()<<dt;
运行结果:
2.设置日期时间
接口基本一样,那我就展示一下啦
time=QTime::currentTime();date=QDate::currentDate();dt.setDate(date);dt.setTime(time);qDebug()<<dt;
运行结果:
又暴露我的时间了,刚刚睡醒哈哈!
3.获取当前时间
dt=QDateTime::currentDateTime();
qDebug()<<dt;
运行结果:
4.增加时间
qDebug()<<dt.addDays(10);
运行结果:
5.获取日期和时间
time=dt.time();date=dt.date();qDebug()<<time;qDebug()<<date;
运行结果:
6.日期时间间隔
qDebug()<<dt1.daysTo(dt);
运行结果:
7.字符串转日期时间
QDateTime dt2=QDateTime::fromString("2024年5月16号9点23分12秒","yyyy年M月dd号h点mm分ss秒");
qDebug()<<dt2;
运行结果:
8.日期时间转字符串
默认的字符串
QString ret=dt1.toString();
qDebug()<<ret;
运行结果:
通过通配符来进行转换
QString ret=dt1.toString("yyyy年M月dd日h点mm分ss秒");
qDebug()<<ret;
运行结果:
四.时间组件
1.综合使用案例
目标效果:
老规矩,先随便拖
说一下这里用到了那些主要组件,主要的,当然是我们这节课学的了。
有Time Edit Date Edit DateTime Edit这几个主要的,可以用Group Box来分组。
然后再对组内的组件进行水平布局,然后对整个窗口进行垂直布局
按钮可以设置一个最大距离
可以设置只读模式
对spin box加后缀
可以对Date 和 DateTime组件添加日历
还有记得改名字哦。
接下来开始转到槽:
对获取当前时间按钮的槽函数
void MainWindow::on_pushButton_clicked()
{ui->timeEditStart->setTime(QTime::currentTime());ui->dateEditStart->setDate(QDate::currentDate());ui->dateTimeEditStart->setDateTime(QDateTime::currentDateTime());
}
对3个SpinBox进行转到槽:
void MainWindow::on_spinBoxTime_valueChanged(int arg1)
{QTime time=ui->timeEditStart->time();time=time.addSecs(arg1*3600);ui->timeEditEnd->setTime(time);
}void MainWindow::on_spinBoxDate_valueChanged(int arg1)
{QDate date=ui->dateEditStart->date();date=date.addDays(arg1);ui->dateEditEnd->setDate(date);
}void MainWindow::on_spinBoxDateTime_valueChanged(int arg1)
{QDateTime dt=ui->dateTimeEditStart->dateTime();dt=dt.addDays(arg1);ui->dateTimeEditEnd->setDateTime(dt);
}
原理都是,先拿到开始时间,然后增加SpinBox里面的时间值,再设置对应的时间即可。
运行结果:
五.总结
对于时间的处理主要就是QTime QDate QDateTime
这三个的接口又基本相似,我们可以记住一套接口,主要还是根据我们的用法来记忆。
可以看看目录来回忆回忆!
最近确实有点赶了,杂事有点多,静不下来,下次要注意注意。
长风破浪会有时,直挂云帆济沧海