Qt时间类、日期类、时间日期类介绍

一.时间类(QTime)

Qt中的时间类QTime是用来处理时间的类,它可以表示一个特定的时间,精确到毫秒。QTime类提供了一些方法来访问和操作时间,例如获取小时、分钟、秒以及毫秒部分,还可以进行时间的比较和运算。

下面是一个简单的例子,展示如何使用QTime类创建一个时间对象,并获取时间的各个部分:

#include <QTime>
#include <QDebug>int main() {// 创建一个QTime对象表示当前时间QTime currentTime = QTime::currentTime();// 输出当前时间的小时、分钟、秒和毫秒部分qDebug() << "Current time: " << currentTime.toString();qDebug() << "Hour: " << currentTime.hour();qDebug() << "Minute: " << currentTime.minute();qDebug() << "Second: " << currentTime.second();qDebug() << "Millisecond: " << currentTime.msec();return 0;
}

 QTime类在Qt中提供了丰富的方法来进行时间的比较、运算以及格式化输出。下面分别详细说明这些方法,并举例演示它们的用法:

 时间比较:

  • QTime::operator==():比较两个时间是否相等。
  • QTime::operator!=():比较两个时间是否不相等。
  • QTime::operator<()QTime::operator>()QTime::operator<=()QTime::operator>=():比较两个时间的大小关系。
#include <QTime>
#include <QDebug>int main() {QTime time1(10, 30, 0);QTime time2(12, 0, 0);if (time1 < time2) {qDebug() << "time1 is earlier than time2";} else {qDebug() << "time2 is earlier than time1";}return 0;
}

 时间运算:

  • QTime::addSecs():增加秒数。
  • QTime::addMSecs():增加毫秒数。
  • QTime::secsTo():计算两个时间之间的秒数差。
  • QTime::msecsTo():计算两个时间之间的毫秒数差。
#include <QTime>
#include <QDebug>int main() {QTime time1(10, 30, 0);QTime time2 = time1.addSecs(3600); // 增加1小时qDebug() << "New time: " << time2.toString();int secsDiff = time1.secsTo(time2);qDebug() << "Seconds difference: " << secsDiff;return 0;
}

二.QTime和QString的转换

在Qt中,可以通过QTime类的toString()方法将QTime对象转换为QString对象,也可以通过QTime类的静态方法fromString()QString对象转换为QTime对象。

QTime转QString:

#include <QTime>
#include <QString>
#include <QDebug>int main() {// 创建一个QTime对象表示特定时间QTime time(12, 30, 0);// 将QTime对象转换为QString对象QString timeString = time.toString("hh:mm:ss");// 输出转换后的字符串qDebug() << "Time as QString: " << timeString;return 0;
}

在上面的例子中,通过调用toString()方法将QTime对象time转换为QString对象timeString,并指定了格式化字符串"hh:mm:ss"来表示小时、分钟和秒的格式。

QString转QTime: 

#include <QTime>
#include <QString>
#include <QDebug>int main() {// 创建一个QString对象表示时间字符串QString timeString = "15:45:30";// 将QString对象转换为QTime对象QTime time = QTime::fromString(timeString, "hh:mm:ss");// 输出转换后的QTime对象qDebug() << "Time from QString: " << time.toString();return 0;
}

在上面的例子中,通过调用fromString()静态方法将QString对象timeString转换为QTime对象time,并指定了格式化字符串"hh:mm:ss"来解析小时、分钟和秒的部分。

通过这种方式,可以方便地在QTime对象和QString对象之间进行转换,便于在Qt应用程序中处理时间数据。

三.日期类(QDate) 

在Qt中,日期类QDate用于处理日期数据,提供了许多方法来操作、比较和格式化日期。下面是对QDate类的详细分析以及一些示例

 QDate类的常用方法和功能:

  1. 构造函数

    • QDate(int year, int month, int day):根据年、月、日创建一个QDate对象。
  2. 获取日期信息

    • year():获取年份。
    • month():获取月份。
    • day():获取日期。
  3. 比较日期

    • operator==()operator!=()operator<()operator>()operator<=()operator>=():用于比较两个日期的大小关系。
  4. 日期运算

    • addDays(int days):增加指定天数。
    • addMonths(int months):增加指定月数。
    • addYears(int years):增加指定年数。
    • daysTo(const QDate &date):计算两个日期之间的天数差。
  5. 格式化输出

    • toString(const QString &format):将日期转换为字符串,可以指定格式化字符串。
  6. 其他方法

    • isValid():检查日期是否有效。
    • currentDate():获取当前日期。
    • fromString(const QString &string, const QString &format):从字符串中解析日期。

示例代码如下 :

#include <QDate>
#include <QDebug>int main() {// 创建一个QDate对象表示特定日期QDate date(2024, 5, 19);// 输出日期信息qDebug() << "Year: " << date.year();qDebug() << "Month: " << date.month();qDebug() << "Day: " << date.day();// 比较日期QDate currentDate = QDate::currentDate();if (date < currentDate) {qDebug() << "The specified date is in the past.";} else {qDebug() << "The specified date is in the future.";}// 日期运算QDate newDate = date.addDays(10);qDebug() << "New date: " << newDate.toString("yyyy-MM-dd");// 格式化输出qDebug() << "Date as string: " << date.toString("dd/MM/yyyy");return 0;
}

四:QDate和QString的转换

在Qt中,可以使用两种方式进行QDateQString之间的转换:一种是使用QDateQString类提供的方法,另一种是使用QVariant类。

1. 使用QDate和QString类的方法进行转换:

QDate转换为QString:

  • 使用QDate::toString(const QString &format)方法将QDate对象转换为字符串。

QString转换为QDate:

  • 使用QDate::fromString(const QString &string, const QString &format)方法将字符串转换为QDate对象。

示例代码如下: 

#include <QDate>
#include <QDebug>int main() {// QDate转换为QStringQDate date(2023, 10, 15);QString dateString = date.toString("yyyy-MM-dd");qDebug() << "Date as string: " << dateString;// QString转换为QDateQString str = "2022-08-25";QDate newDate = QDate::fromString(str, "yyyy-MM-dd");qDebug() << "String to date: " << newDate.toString("yyyy-MM-dd");return 0;
}

2. 使用QVariant进行转换:

QDate转换为QString:

  • 使用QVariant::fromValue()QDate对象转换为QVariant对象,再使用QVariant::toString()QVariant对象转换为字符串。

QString转换为QDate:

  • 使用QVariant::fromValue()将字符串转换为QVariant对象,再使用QVariant::value<QDate>()QVariant对象转换为QDate对象。

示例代码如下: 

#include <QDate>
#include <QVariant>
#include <QDebug>int main() {// QDate转换为QStringQDate date(2023, 10, 15);QVariant variant = QVariant::fromValue(date);QString dateString = variant.toString();qDebug() << "Date as string: " << dateString;// QString转换为QDateQString str = "2022-08-25";QVariant newVariant = QVariant::fromValue(str);QDate newDate = newVariant.value<QDate>();qDebug() << "String to date: " << newDate.toString("yyyy-MM-dd");return 0;
}

 五:时间日期类(QDateTime)

在Qt中,QDateTime类用于表示日期和时间的组合。它包含了日期和时间的信息,并提供了一系列方法来处理日期和时间数据。以下是QDateTime类的一些主要特性和示例:

 主要特性:

  1. 构造函数QDateTime类有多个构造函数,可以根据需要传递日期、时间、时区等参数来创建对象。

  2. 获取日期时间信息

    • date():获取日期部分。
    • time():获取时间部分。
    • timeZone():获取时区信息。
  3. 比较和运算

    • 可以比较两个QDateTime对象的大小。
    • 可以对QDateTime对象进行加减操作,例如addDays()addSecs()addMonths()等。
  4. 格式化输出

    • toString(const QString &format):将QDateTime对象格式化为字符串。
  5. 其他方法

    • isValid():检查日期时间是否有效。
    • currentDateTime():获取当前日期时间。
    • fromString(const QString &string, const QString &format):从字符串中解析日期时间。

代码示例如下: 

#include <QDateTime>
#include <QDebug>int main() {// 创建一个QDateTime对象表示特定日期时间QDateTime datetime(QDate(2024, 5, 19), QTime(12, 30, 0));// 输出日期时间信息qDebug() << "Date: " << datetime.date().toString("yyyy-MM-dd");qDebug() << "Time: " << datetime.time().toString("hh:mm:ss");// 比较日期时间QDateTime currentDateTime = QDateTime::currentDateTime();if (datetime < currentDateTime) {qDebug() << "The specified date time is in the past.";} else {qDebug() << "The specified date time is in the future.";}// 日期时间运算QDateTime newDateTime = datetime.addDays(5).addSecs(3600); // 增加5天和1小时qDebug() << "New date time: " << newDateTime.toString("yyyy-MM-dd hh:mm:ss");// 格式化输出qDebug() << "Date time as string: " << datetime.toString("yyyy-MM-dd hh:mm:ss");return 0;
}

六:QDate和QString的转换

在Qt中,可以使用QDateTime类来表示日期和时间,并且可以与QString进行相互转换。以下是关于日期时间类QDateTimeQString之间转换的详细说明以及示例:

QDateTime转换为QString:

1.使用toString()方法QDateTime类提供了toString()方法,可以将日期时间对象转换为字符串,可以指定格式。

QDateTime dateTime(QDate(2024, 5, 19), QTime(12, 30, 0)); // 创建一个日期时间对象
QString dateTimeString = dateTime.toString("yyyy-MM-dd hh:mm:ss"); // 转换为字符串
qDebug() << "DateTime as string: " << dateTimeString;

 2.使用QVariant:可以通过QVariant::fromValue()QDateTime对象转换为QVariant对象,再使用QVariant::toString()QVariant对象转换为字符串。

QDateTime dateTime(QDate(2024, 5, 19), QTime(9, 0, 0));
QVariant variant = QVariant::fromValue(dateTime);
QString dateTimeString = variant.toString();
qDebug() << "DateTime as string: " << dateTimeString;

QString转换为QDateTime:

1.使用QDateTime::fromString()静态方法:可以通过QDateTime::fromString()静态方法将字符串转换为QDateTime对象。

QString dateTimeStr = "2024-05-19 17:20:30";
QDateTime newDateTime = QDateTime::fromString(dateTimeStr, "yyyy-MM-dd hh:mm:ss");
qDebug() << "String to DateTime: " << newDateTime.toString();

 2.使用QVariant:可以通过QVariant::fromValue()将字符串转换为QVariant对象,再使用QVariant::value<QDateTime>()QVariant对象转换为QDateTime对象。

QString dateTimeStr = "2024-05-19 12:15:00";
QVariant newVariant = QVariant::fromValue(dateTimeStr);
QDateTime newDateTime = newVariant.value<QDateTime>();
qDebug() << "String to DateTime: " << newDateTime.toString();

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python列表,元组,集合,字典详解一篇搞懂

目录 介绍 列表(List) 集合(Set) 字典(Dict) 元组(Tuple) 列表 列表定义 ​编辑 列表切片 列表常用方法 append extend ​编辑 insert ​编辑 remove pop ​编辑 clear ​编辑 列表修改元素 sort 升序 倒序 reverse count ​编辑 index 浅拷贝和深拷贝 …

《书生·浦语大模型实战营》第一课 学习笔记:书生·浦语大模型全链路开源体系

文章大纲 1. 简介与背景智能聊天机器人与大语言模型目前的开源智能聊天机器人与云上运行模式 2. InternLM2 大模型 简介3. 视频笔记&#xff1a;书生浦语大模型全链路开源体系内容要点从模型到应用典型流程全链路开源体系 4. 论文笔记:InternLM2 Technical Report简介软硬件基础…

基于Java的地震震中附近城市分析实战

目录 前言 一、空间数据说明 1、空间查询 二、Java后台开发 1、模型层设计与实现 2、控制层设计与实现 三、Leaflet地图开发 1、地震震中位置展示 2、附近城市展示 3、成果展示 总结 前言 随着全球气候变化和地壳活动的不断演变&#xff0c;地震作为一种自然灾害&…

第十三节:带你梳理Vue2 : watch侦听器

官方解释:> 观察 Vue 实例变化的一个表达式或计算属性函数。回调函数得到的参数为新值和旧值。表达式只接受监督的键路径。对于更复杂的表达式&#xff0c;用一个函数取代<br/>## 1. 侦听器的基本使用侦听器可以监听data对象属性或者计算属性的变化watch是观察属性的…

现代C++ 如何使用 Lambda 使代码更具表现力、更容易理解?

使用 Lambda 使代码更具表现力 一、Lambda VS. 仿函数二、总结 一、Lambda VS. 仿函数 Lambda 是 C11 中最引人注目的语言特性之一。它是一个强大的工具&#xff0c;但必须正确使用才能使代码更具表现力&#xff0c;而不是更难理解。 首先&#xff0c;要明确的是&#xff0c;…

向npm发布自己写的vue组件,使用vite创建项目

向npm发布自己写的vue组件&#xff0c;使用vite创建项目 创建项目 pnpm create vite输入项目名称 由于我的组件是基于 ant-design-vue和vue的&#xff0c;需要解析.vue文件&#xff0c;我又安装了下面4个。 然后执行 pnpm i安装依赖 vite.config.ts import { defineC…

防范TOCTOU竞态条件攻击

防范TOCTOU竞态条件攻击 在软件开发过程中&#xff0c;我们常常会遇到需要在使用资源之前检查其状态的情况。然而&#xff0c;如果资源的状态在检查和使用之间发生了变化&#xff0c;那么检查的结果可能会失效&#xff0c;导致软件在资源处于非正常状态时执行无效操作。这种时…

[datawhale202405]从零手搓大模型实战:TinyAgent

结论速递 TinyAgent项目实现了一个简单的Agent智能体&#xff0c;主要是实现了ReAct策略&#xff08;推理调用工具的能力&#xff09;&#xff0c;及封装了一个Tool。 项目实现有一定的疏漏。为了正确运行代码&#xff0c;本次对代码Agent部分进行了简单修改&#xff08;完善…

windows安装rocketmq

1.下载连接 https://rocketmq.apache.org/download/ 2.解压到D盘下&#xff08;其他位置也可以&#xff09; 3.配置环境变量 需要有jdk环境 新建ROCKETMQ_HOME&#xff0c;刚刚解压的位置 编辑Path&#xff0c;新增%ROCKETMQ_HOME%\bin 4.启动mqnameserver 进入安装bin目录下…

ERC314协议

314协议功能详解 这两天花时间研究了一下314协议&#xff0c;总体感觉还不错&#xff0c;有创新。 功能亮点 314协议作为一种创新的代币标准&#xff0c;致力于降低用户交易成本与简化授权流程&#xff0c;通过“转账即交易”模式革新传统Swap体验。此协议简化了买卖代币的过程…

什么是react

React 是一个用于构建用户界面的 JavaScript 库&#xff0c;由 Facebook&#xff08;现在的 Meta&#xff09;开发和维护。它首次发布于2013年&#xff0c;并迅速成为最受欢迎的前端库之一。React 的主要目标是提供一种高效、灵活的方式来构建用户界面&#xff0c;特别是在大型…

gc和gccgo编译器

Go 语言有两个主要的编译器&#xff0c;分别是 Go 编译器&#xff08;通常简称为 gc&#xff09;和 GCCGO。它们之间有一些重要的异同点&#xff1a; gc 编译器&#xff1a; gc 是 Go 语言的官方编译器&#xff0c;由 Go 语言的开发团队维护。它是 Go 语言最常用的编译器&#…

PHP代码审计前期准备

1 php代码审计的意义 1.1 什么是代码审计 就是获取目标的代码&#xff0c;这个目标可以是一个网站&#xff0c;也可以是一个手机app 1.2 黑盒测试与白盒测试的区别 在代码审计中黑盒和白盒的主要区别就在于是否可以拿到源代码&#xff0c;黑盒是拿不到源代码的&#xff0c;…

交叉编译——

什么是交叉编译 交叉编译 是在一个平台上生成临海一个平台可执行代码. eg.在windows上面编写C51代码&#xff0c;并编译生成可执行代码。如xx.hex 我们在Ubuntu上编写树莓派的代码&#xff0c;并编译成可执行代码。a.out. 是在树莓派上运行&#xff0c;不在Ubuntu Linux上面运…

便携式iv测试仪特点

TH-PV30便携式IV测试仪是一种用于测量半导体器件电学特性的设备&#xff0c;它具有体积小、重量轻、便于携带等特点&#xff0c;广泛应用于半导体行业、科研实验室以及教育领域。 该测试仪的工作原理基于四探针法&#xff0c;通过在半导体器件表面放置四个金属探针&#xff0c…

【vs2022】安装copilot和reshaper

直接安装新版vs 17.10 自带集成的copilot支持安装resharper 可以跳过市场里的reshper安装好后依然可以直接使用vs。 resharper 2024.1.2 市场里还是i老版本&#xff1a; copilot 不兼容,这个是之前市场安装的版本 官方建议用vs intall 安装 安裝 GitHub Copilot GitHub.Co…

详解http协议

什么是HTTP协议 定义 Http协议即超文本传送协议 (HTTP-Hypertext transfer protocol) 。 它定义了浏览器&#xff08;即万维网客户进程&#xff09;怎样向万维网服务器请求万维网文档&#xff0c;以及服务器怎样把文档传送给浏览器。从层次的角度看&#xff0c;HTTP是面向&am…

第四十一天 | 62.不同路径 63.不同路径|| 343.整数拆分 96.不同的二叉搜索树

题目&#xff1a;62.不同路径 1.二维dp数组dp[i][j]含义&#xff1a;到达&#xff08;i&#xff0c;j&#xff09;位置有dp[i][j]种方法。 2.动态转移方程&#xff1a;dp[i][j] dp[i - 1][j] dp[i][j - 1] 3.初始化&#xff1a;dp[0][j] 1, dp[i][0] 1 &#xff08;第一…

Vue3设置缓存:storage.ts

在vue文件使用&#xff1a; import { Local,Session } from //utils/storage; // Local if (!Local.get(字段名)) Local.set(字段名, 字段的值);// Session Session.getToken()storage.ts文件&#xff1a; import Cookies from js-cookie;/*** window.localStorage 浏览器永…

uniapp 安卓 Pc端真机浏览器调试

下载插件:真机模拟浏览器 1. 安装, 每次启用时使用usb 线连接电脑, 并且打开手机或者POS (调试设备)开发者模式, 比如我的是pos 机 则在系统设置中找到版本号,点击多次就会触发开发者模式 2.打开真机模拟软件,打开后会打开一个浏览器,如果想要模拟google的浏览器则 在浏览器地…