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

时间日期

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1424174.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

安卓Fragment基础

目录 前言一、基础使用二、动态添加Fragment三、Fragment的生命周期四、Fragment之间进行通信五、Fragment兼容手机和平板示例 前言 Fragment基础使用笔记 一、基础使用 Activity布局和文件 <LinearLayout xmlns:android"http://schemas.android.com/apk/res/andro…

前端面试题(二十三)(答案版)

面试形式&#xff1a;线上电话面试&#xff1a;一面&#xff1a;时长30分钟 面试评价&#xff1a;精准考察项目所需技术理论工作实践 面试官的提问大纲&#xff1a;本公司项目要求本人简历 工作经验&#xff1a;2-4年 公司名称&#xff1a;深圳XX&#xff08;想知道的就滴喔…

KNN算法项目实战之酒的分类

加载数据集 from sklearn.datasets import load_winewine_dataset load_wine()数据集有什么&#xff1f; data&#xff1a;数据 target&#xff1a;目标分类 target_names&#xff1a;目标分类名称 DESCR&#xff1a;数据描述 features_names&#xff1a;特征变量名称 查…

2024自学网络安全的三个必经阶段(含路线图)_网络安全自学路线

一、为什么选择网络安全&#xff1f; 这几年随着我国《国家网络空间安全战略》《网络安全法》《网络安全等级保护2.0》等一系列政策/法规/标准的持续落地&#xff0c;网络安全行业地位、薪资随之水涨船高。 未来3-5年&#xff0c;是安全行业的黄金发展期&#xff0c;提前踏入…

从零入门激光SLAM(十六)——卡尔曼滤波基础

一、卡尔曼滤波简介KF 卡尔曼滤波器&#xff08;Kalman Filter&#xff09;是一种用于估计动态系统状态的递归算法。它通过结合系统的动态模型和噪声观测数据&#xff0c;提供对系统状态的最优估计。卡尔曼滤波器广泛应用于信号处理、控制系统、导航、计算机视觉等领域。 卡尔…

SHELL编程(一)

目录 一、 Linux操作系统&#xff08;一&#xff09;内核与操作系统&#xff08;二&#xff09;操作系统的功能 二、Linux高级命令&#xff08;一&#xff09; 离线安装 dpkg1. 安装2. 使用3. 查看安装详细信息4. 安装路径5. 不完全删除6. 完全删除 &#xff08;二&#xff09;…

买了个彩票,哈哈哈哈哈。

买了个彩票-双色球&#xff0c;发现挺有意思的。 索性把双色球的所有期的中奖号码的数据都爬了下来&#xff0c;03至今&#xff0c;21年了。txt文本&#xff0c;6.5MB大小。 大家有啥好的建议&#xff0c;分析一下数据呢。

数据结构链表详解(不仅顺序表可以,我链表也可以)

目录 顺序表的缺点&#xff1a; 链表 链表的概念及其结构 链表的分类 链表的实现 链表形式&#xff1a; 节点的创建: 链表的增删&#xff1a; 尾插 头插 尾删 头删 查找 打印 链表的重点 1、尾删&#xff1a;则是需要找到尾节点&#xff0c;进行删除 2、头删&a…

同为代码签名证书,OV和EV的区别在哪?

代码签名证书是用于为软件开发者提供的数字签名认证服务&#xff0c;它有助于保护软件的安全性和开发者的声誉&#xff0c;OV代码签名和EV代码签名有什么区别呢&#xff0c;如何选择&#xff1f; 代码签名证书查看https://www.joyssl.com/certificate/select/code_signing.htm…

微分阻尼作用的理解

先说阻尼的作用,阻尼能够缩短系统整定时间,减小系统响应的振动幅度。 1、CODESYS位置式PID(完整ST源代码) CODESYS位置式PID(完整ST源代码)_codesys pid功能块-CSDN博客文章浏览阅读1.2k次,点赞2次,收藏2次。CODESYS增量式PID完整源代码请参看下面文章链接:CODESYS增量式…

什么是等保测评?等保测评必须进行吗?

等保测评&#xff0c;全称为信息安全等级保护测评&#xff0c;是指对信息系统安全等级保护状况进行测试评估的活动。它是根据国家信息安全等级保护规范规定&#xff0c;由具有相应资质的测评机构&#xff0c;按照相关管理规范和技术标准进行的&#xff0c;目的是验证信息系统是…

Minecraft 我的世界服务器Java版开服联机教程

本教程使用Paper核心开服 1、进入控制面板 1.2、第一次购买服务器会安装游戏端&#xff0c;大约5分钟左右&#xff0c;如果长时间处于安装状态请联系客服 2、开启服务器 2.1、等待出现同意Minecraft EULA 协议时&#xff0c;点击“我接受” 2.2、等待running出现服务器就打开了…

栈和队列(1)

现在是个激动人心的时刻&#xff0c;因为我们来到了栈和队列的章节。 栈是一种特殊的线性表&#xff0c;只允许在一端进行插入和删除操作。进入数据插入和删除的一端叫作栈顶&#xff0c;另一端称为栈底。具有后进先出的特点。 压栈&#xff1a;数据的插入操作叫作进栈/入栈/…

【GESP】2023年12月图形化三级 -- 小杨做题

小杨做题 【题目描述】 为了准备考试,小杨每天都要做题。第 1 天,小杨做了 a a a 道题,第 2 天,小杨做了 b b b

vue-pure-admin项目内复制文字粘贴到word中之后存在边框问题

vue-pure-admin项目内复制文字粘贴到word中之后存在黑色边框是由于reset.scss文件内设置了通配符的border样式 修改前 代码 *, ::before, ::after {box-sizing: border-box;// 添加这个样式会导致复制的文字粘贴到word中带有边框问题border-color: currentColor;border-styl…

MIRO时,修改页签“采购订单参考”的数量时,金额不自动计算

MIRO 发票校验时&#xff0c;进入到如下界面&#xff0c;系统参考采购订单自动带出已经收货的金额和数量。 此时如果想要修改数量时&#xff0c;有些用户账号下&#xff0c;金额不自动计算&#xff0c;但是有些用户账号下&#xff0c;数量更改时&#xff0c;系统自动计算和建议…

FreeRTOS中断管理

文章目录 前言一、ISR的API函数二、切换任务 前言 在RTOS中&#xff0c;需要应对各类事件。这些事件很多时候是通过硬件中断产生。 假设当前系统正在运行Task1任务&#xff0c;用户按下了按键&#xff0c;触发了按键中断。触发中断后&#xff1a; 硬件负责&#xff1a; CPU跳到…

决策规划仿真平台的搭建

以下内容笔记据来自于b站up主忠厚老实的老王&#xff0c;视频&#xff1b;链接如下&#xff1a; 自动驾驶决策规划算法第二章第一节 决策规划仿真平台搭建_哔哩哔哩_bilibili 使用到的软件有matlab、prescan、carsim以及visual stadio。 我电脑上软件的版本是matlab2022a&am…

Java | 增强for底层工作机制

✍&#x1f3fc;作者&#xff1a;周棋洛&#xff0c;bilidown开发者。 ♉星座&#xff1a;金牛座 &#x1f3e0;主页&#xff1a;我的个人网站 &#x1f310;关键&#xff1a;Java 增强for 工作机制 目录 引言增强for循环语法增强for工作机制探究简单总结1.对于实现了Iterable接…