QDateTime 使用详解

news2024/10/10 10:19:27

        QDateTime 是 Qt 框架中用于处理日期和时间的类。本篇文章详细介绍、通过示例 快速了解QDateTime的各种操作,包括: 当前时间、获取日期和时间、获取日期、获取时间、获取时间戳、格式化输出、年、月、日、QTime时间、获取微妙、操作日期和时间、添加时间、减去时间、指定时间、比较时间、时区处理、设置时区、查询时区、常用时区、转换时区、有效性等操作

转载请附上文章出处与本文链接。

QDateTime 使用详解目录

1 当前时间

2 获取日期和时间

2.1 获取日期

2.2 获取时间

2.3 获取时间戳

3 格式化输出

3.1 字符串

3.2 年

3.3 月

3.4 日

3.5 其它

4 QTime

4.1 获取年月日

4.2 获取微妙

5 操作日期和时间

5.1 添加时间

5.2 减去时间

5.3 指定时间

6 比较时间

7 时区处理

7.1 设置时区

7.2 查询时区

7.3 常用时区

7.4 转换时区

8 有效性

9 .h源文件

10 .cpp


1 当前时间

	QDateTime currentDateTime = QDateTime::currentDateTime();

	qDebug() << currentDateTime;	

    //QDateTime(2024-10-08 01:36:56.886 中国标准时间 Qt::LocalTime)

2 获取日期和时间

2.1 获取日期

	QDate date = currentDateTime.date();

	qDebug() << date;

    QDate("2024-10-08")

2.2 获取时间

	QTime time = currentDateTime.time();

	qDebug() << time;

    QTime("01:50:30.786")

2.3 获取时间戳

	qint64 timestamp = currentDateTime.toMSecsSinceEpoch();

	qDebug() << timestamp;

    1728323430786

3 格式化输出

3.1 字符串

    QString formattedString = currentDateTime.toString("yyyy-MM-dd HH:mm:ss zzz");

    qDebug() << formattedString;

    "2024-10-08 01:54:59 638"

3.2 年

	//年
	formattedString = currentDateTime.toString("yyyy");

	qDebug() << formattedString;

3.3 月

	//月
	formattedString = currentDateTime.toString("MM");

	qDebug() << formattedString;

3.4 日

	//日
	formattedString = currentDateTime.toString("dd");

	qDebug() << formattedString;

3.5 其它

// 时、分、秒、毫秒 同上

4 QTime

4.1 获取年月日

	int year = currentDateTime.date().year();   // 获取年份

	int month = currentDateTime.date().month(); // 获取月份

	int day = currentDateTime.date().day();     // 获取日期

	qDebug() << "年:" << year << "月:" << month << "日:" << day;

    年: 2024 月: 10 日: 8

4.2 获取微妙

	QTime time = currentDateTime.time();

	int milliseconds = time.msec(); // 获取毫秒

	int microseconds = milliseconds * 1000; // 转换为微秒

	qDebug() << "微秒:" << microseconds;

    微秒: 244000

5 操作日期和时间

5.1 添加时间

	//添加时间:
	QDateTime futureDateTime = currentDateTime.addDays(5); // 添加5天

	qDebug() << futureDateTime;

    QDateTime(2024-10-13 02:07:11.244 中国标准时间 Qt::LocalTime)

5.2 减去时间

	//减去时间:
	QDateTime pastDateTime = currentDateTime.addMonths(-1); // 减去1个月

	qDebug() << pastDateTime;

    QDateTime(2024-09-08 02:07:11.244 中国标准时间 Qt::LocalTime)

5.3 指定时间

	QDateTime specificDateTime(QDate(2023, 10, 1), QTime(12, 30, 0));

	qDebug() << specificDateTime;	

    //QDateTime(2023-10-01 12:30:00.000 中国标准时间 Qt::LocalTime)

6 比较时间

	//比较两个 QDateTime 对象:
	if (currentDateTime < specificDateTime)
	{
		// currentDateTime 早于 specificDateTime
	}

7 时区处理

7.1 设置时区

	QTimeZone timeZone("Asia/Shanghai");

	QDateTime dateTimeInZone = currentDateTime.toTimeZone(timeZone);

7.2 查询时区

    // 获取所有可用的时区 ID
    QStringList timeZoneIds = QTimeZone::availableTimeZoneIds();

    // 打印所有时区 ID
    foreach (const QString &id, timeZoneIds)
    {
        qDebug() << id;
    }

7.3 常用时区

UTC:协调世界时

Asia/Shanghai:中国标准时间

America/New_York:东部标准时间

Europe/London:格林威治标准时间

Asia/Tokyo:日本标准时间

7.4 转换时区

QDateTime utcDateTime = currentDateTime.toUTC();

8 有效性

	//检查有效性:
	if (currentDateTime.isValid())
	{
		// 当前时间有效
	}

9 .h源文件

#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_QDateTimeTest.h"

#include <QDebug>
#include <QDateTime>
#include <QTimeZone>
#pragma execution_character_set("utf-8")
class QDateTimeTest : public QMainWindow
{
    Q_OBJECT

public:
    QDateTimeTest(QWidget *parent = nullptr);
    ~QDateTimeTest();

private:
    Ui::QDateTimeTestClass ui;
};

10 .cpp

#include "QDateTimeTest.h"

QDateTimeTest::QDateTimeTest(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);

	QDateTime currentDateTime = QDateTime::currentDateTime();
	qDebug() << currentDateTime;	//QDateTime(2024-10-08 01:36:56.886 中国标准时间 Qt::LocalTime)


	///@ 获取日期和时间
	qDebug() << "获取日期和时间";

	//获取日期:
	QDate date = currentDateTime.date();
	qDebug() << date;

	//获取时间:
	QTime time = currentDateTime.time();
	qDebug() << time;

	//获取时间戳:
	qint64 timestamp = currentDateTime.toMSecsSinceEpoch();
	qDebug() << timestamp;

	///@ 格式化输出
	qDebug() << "格式化输出";

	//格式化为字符串:
	QString formattedString = currentDateTime.toString("yyyy-MM-dd HH:mm:ss zzz");
	qDebug() << formattedString;

	//年
	formattedString = currentDateTime.toString("yyyy");
	qDebug() << formattedString;

	//月
	formattedString = currentDateTime.toString("MM");
	qDebug() << formattedString;

	//日
	formattedString = currentDateTime.toString("dd");
	qDebug() << formattedString;

	// 时、分、秒、毫秒类似



	///@ QTime



	int year = currentDateTime.date().year();   // 获取年份
	int month = currentDateTime.date().month(); // 获取月份
	int day = currentDateTime.date().day();     // 获取日期

	qDebug() << "年:" << year << "月:" << month << "日:" << day;


	time = currentDateTime.time();
	int milliseconds = time.msec(); // 获取毫秒
	int microseconds = milliseconds * 1000; // 转换为微秒
	qDebug() << "微秒:" << microseconds;


	///@ 操作日期和时间
	qDebug() << "操作日期和时间";

	//添加时间:
	QDateTime futureDateTime = currentDateTime.addDays(5); // 添加5天
	qDebug() << futureDateTime;

	//减去时间:
	QDateTime pastDateTime = currentDateTime.addMonths(-1); // 减去1个月
	qDebug() << pastDateTime;




	QDateTime specificDateTime(QDate(2023, 10, 1), QTime(12, 30, 0));

	qDebug() << specificDateTime;	//QDateTime(2023-10-01 12:30:00.000 中国标准时间 Qt::LocalTime)



	///@ 比较

	//比较两个 QDateTime 对象:
	if (currentDateTime < specificDateTime)
	{
		// currentDateTime 早于 specificDateTime
	}




	///@ 时区处理

	//设置时区:
	QTimeZone timeZone("Asia/Shanghai");
	QDateTime dateTimeInZone = currentDateTime.toTimeZone(timeZone);

	//获取时区:
	QTimeZone currentZone = currentDateTime.timeZone();

	///@ 其他方法

	//检查有效性:
	if (currentDateTime.isValid())
	{
		// 当前时间有效
	}

	//转换为 UTC:
	QDateTime utcDateTime = currentDateTime.toUTC();

}

QDateTimeTest::~QDateTimeTest()
{



}

11 其它文章

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

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

相关文章

搭建 golang 项目的目录介绍及其用途对比表

文章目录 1.目录细则表2.目录使用说明及典型内容2.例 K8S 源码目录编排 1.目录细则表 常见 Go 项目目录的作用、典型内容、文件类型和使用场景~ 目录名作用/用途常见文件类型使用场景及详细说明典型内容举例cmd/存放可执行文件的入口点&#xff0c;通常为项目主程序入口或工具…

SAP_FI模块-公司间资产转移ABT1N操作

业务背景&#xff1a; 1、用户在OA走公司间资产的转移流程时&#xff0c;提示错误以下错误&#xff1b; 通过与OA开发的同事沟通发现&#xff0c;调用的接口是自开发的这个&#xff1a;ZFIF_AA_TRANSFER_POST&#xff0c;使用的是BDC录屏的方式&#xff0c;真正执行的事务码是A…

重学SpringBoot3-集成Redis(一)之基础功能

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-集成Redis&#xff08;一&#xff09;之基础功能 1. 项目初始化2. 配置 Redis3. 配置 Redis 序列化4. 操作 Redis 工具类5. 编写 REST 控制器6. 测试 AP…

DAMA数据管理知识体系(第12章 元数据管理)

课本内容 12.1 引言 图12-1 语境关系图&#xff1a;元数据概念理解 元数据的信息范围很广&#xff0c;不仅包括技术和业务流程、数据规则和约束&#xff0c;还包括逻辑数据结构与物理数据结构等。它描述了数据本身&#xff08;如数据库、数据元素、数据模型&#xff09;&#x…

MokeJs使用实例

文章目录 MokeJs使用实例介绍使用安装配置文件导入配置到main.js使用 axios 发送网络请求测试&#xff08;如果不会axios&#xff0c;具体可以见上篇文章axios&#xff09;启动示例 MokeJs使用实例 介绍 使用 安装 npm install mockjs --save-dev # 或者 yarn add mockj…

python画图|两个Y轴共享X轴

【1】引言 在前述学习中&#xff0c;对使用matplotlib模块输出图形已经非常熟练&#xff0c;但常见的画图方式并未穷尽&#xff0c;如两个Y轴共享X轴就没有探索过。 对此&#xff0c;我进行了一些学习&#xff0c;获得一些心得&#xff0c;在此和大家共享。 【2】官网教程 …

点评项目-4-隐藏敏感信息、使用 redis 优化登录业务

一、隐藏敏感信息 之前我们对 /user/me 路径&#xff0c;直接返回了登录的所有用户信息&#xff0c;其中的 passward 等敏感信息也会被返回到前端&#xff0c;这是很危险的&#xff0c;故我们需要选择性的返回用户信息&#xff0c;隐藏敏感用户信息 我们可以创建一个 UserDTO…

ECCV`24 | 新加坡国立华为提出Vista3D: 实现快速且多视角一致的3D生成

文章链接&#xff1a;https://arxiv.org/pdf/2409.12193 gitbub链接&#xff1a;https://github.com/florinshen/Vista3D 亮点直击 提出了Vista3D&#xff0c;一个用于揭示单张图像3D darkside 的框架&#xff0c;能够高效地利用2D先验生成多样的3D物体。开发了一种从高斯投影到…

43 C 程序动态内存分配:内存区域划分、void 指针、内存分配相关函数(malloc、calloc、realloc、_msize、free)、内存泄漏

目录 1 C 程序内存区域划分 1.1 代码区 (Code Section) 1.2 全局/静态区 (Global/Static Section) 1.3 栈区 (Stack Section) 1.4 堆区 (Heap Section) 1.5 动态内存分配 2 void 指针&#xff08;无类型指针&#xff09; 2.1 void 指针介绍 2.2 void 指针的作用 2.3 …

Web自动化Demo-Go+Selenium

1.新建工程 使用GoLand新建工程如下&#xff1a; 打开终端输入如下命令安装Selenium go get -u github.com/tebeka/selenium 2.编写代码 package mainimport ("fmt""github.com/tebeka/selenium""log""time" )const (chromeDriver…

视频生成的黎明:100+页干货全面探讨SORA类模型(T2VI2VV2V全包括)腾讯中科大

日前&#xff0c;腾讯AI Lab和中科大联合发布了100多页的类SORA模型研究报告&#xff0c;非常全面&#xff0c;很有学习和研究价值&#xff0c;今天和大家分享下&#xff0c;内容较多&#xff0c;可后台回复【类SORA报告】获取100多页pdf。 开源地址&#xff1a;https://ailab-…

函数信号发生器的直流偏置(OFFSET)旋钮的作用及操作方法

函数信号发生器&#xff08;Function Generator&#xff09;是电子工程师和技术人员在电路设计、测试和调试中常用的设备之一。它可以生成各种标准波形&#xff0c;如正弦波、方波、三角波等&#xff0c;以及用户自定义的任意波形。在众多参数设置中&#xff0c;直流偏置&#…

2025考研今天开始预报名!攻略请查收

2025年全国硕士研究生招生考试 今天起开始预报名 有什么流程&#xff1f;需要准备哪些信息&#xff1f; 这份考研报名攻略速查收 ↓↓↓ 全国硕士研究生招生考试报名包括网上报名和网上确认两个阶段&#xff1a; 网上预报名时间为10月9日至10月12日&#xff08;每日9&#xff1…

电脑屏保设置教程 好看的电脑屏保应该怎么设置?

一、电脑自带的屏保设置&#xff0c;主题少&#xff0c;操作复杂&#xff1b; 你需要选择一个合适的屏保。在Windows系统中&#xff0c;你可以通过以下步骤找到合适的屏保&#xff1a; 右键点击桌面空白处&#xff0c;选择“个性化”&#xff1b; 在“个性化”设置中&#x…

win10家庭版配置ubantu20.04子系统

需要在本地配置一个环境去跑代码&#xff0c;代码的环境如下&#xff1a; 刚开始准备给电脑装一个双系统的&#xff0c;室友踩过坑告诉我安装wsl子系统就可以了&#xff0c;方便快捷~ 于是开始了摸索之旅&#xff01;记录如下 &#xff08;我刚开始以为一定要win10专业版&…

人才画像的重要性,如何打造精准人才画像?

人才画像在人力资源管理中占据重要地位&#xff0c;尤其是在人才招聘环节&#xff0c;它发挥着不可替代的作用&#xff0c;制定精准的人才画像有助于优化招聘和人力资源管理&#xff0c;从而提高组织竞争力和发展潜力。 一、人才画像的重要性 提高招聘精准度&#xff1a;精准…

考试系统之题目反馈

在现代教育体系中&#xff0c;考试不仅是检验学生学习成果的重要手段&#xff0c;也是教师评估教学效果、调整教学策略的关键环节。随着科技的飞速发展&#xff0c;传统的纸质考试逐渐被在线考试系统所取代&#xff0c;而题目反馈功能作为在线考试系统不可或缺的一部分&#xf…

电磁兼容(EMC):整改案例(五)EFT测试,改初级Y电容

目录 1. 异常现象 2. 原因分析 3. 整改方案 4. 总结 1. 异常现象 某产品按GB/T 17626.4标准进行电快速瞬变脉冲群测试&#xff0c;测试条件为&#xff1a;频率5kHz/100kHz&#xff0c;测试电压L&#xff0c;N线间2kV。其中频率5kHz时&#xff0c;测试通过&#xff0c;但频…

开源 AI 智能名片 O2O 商城小程序源码助力企业实现三层式个性化体验

摘要&#xff1a;本文探讨了在数字化时代&#xff0c;企业如何利用开源 AI 智能名片 O2O 商城小程序源码实现三层式个性化体验。通过分析数字化空间的定制化和个性化服务特点&#xff0c;以及实体经营中对人际互动的依赖&#xff0c;阐述了随着物联网和人工智能基础设施的开发&…

[Python] 使用Python自定义生成二维码

文章目录 目录 安装 qrcode 库生成简单的二维码代码讲解 生成自定义样式的二维码代码讲解 生成带有链接的二维码代码讲解 Demo代码实现代码讲解 总结 收录专栏: [Python] 二维码是现在非常常用的一种信息存储和传递方式&#xff0c;我们可以通过扫描二维码来快速获取文本、链接…