【qt】一次性讲清楚日期和时间
对于时间的处理主要就是QTimeQDateQDateTime这三个的接口又基本相似,我们可以记住一套接口,主要还是根据我们的用法来记忆。可以看看目录来回忆回忆!最近确实有点赶了,杂事有点多,静不下来,下次要注意注意。长风破浪会有时,直挂云帆济沧海。
大家好,这里是国中之林!
❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看←
时间日期
一.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
这三个的接口又基本相似,我们可以记住一套接口,主要还是根据我们的用法来记忆。
可以看看目录来回忆回忆!
最近确实有点赶了,杂事有点多,静不下来,下次要注意注意。
长风破浪会有时,直挂云帆济沧海
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)