【qt】一次性讲清楚日期和时间

一.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
这三个的接口又基本相似,我们可以记住一套接口,主要还是根据我们的用法来记忆。
可以看看目录来回忆回忆!

最近确实有点赶了,杂事有点多,静不下来,下次要注意注意。

长风破浪会有时,直挂云帆济沧海

  • 19
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值