【qt】一次性讲清楚日期和时间1:https://developer.aliyun.com/article/1522994
三.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
这三个的接口又基本相似,我们可以记住一套接口,主要还是根据我们的用法来记忆。
可以看看目录来回忆回忆!
最近确实有点赶了,杂事有点多,静不下来,下次要注意注意。
长风破浪会有时,直挂云帆济沧海