当前位置: 首页 > news >正文

Qt 基础之QDataTime

Qt 基础之QDataTime

  • 引言
  • 一、获取(设定)日期和时间
  • 二、时间戳
  • 三、时间计算 (重载运算符)

引言

QDataTime是Qt框架中用于处理日期和时间的类。它提供了操作和格式化日期、时间和日期时间组合的功能。QDataTime可以用于存储和检索日期和时间、比较日期和时间、对日期和时间执行算术操作以及将日期和时间转换为不同的格式。(注:QDateTime不包括闰秒。)

一、获取(设定)日期和时间

    1. 获取当前日期和时间:
      在这里插入图片描述
#include "mainwindow.h"
#include <QApplication>
#include <QDateTime>int main(int argc, char *argv[])
{QApplication a(argc, argv);QDateTime currentDateAndTime = QDateTime::currentDateTime(); // 获取当前日期和时间qDebug("Current date and time: %s", currentDateAndTime.toString().toUtf8().constData());return a.exec();
}
    1. 修改时间格式:currentDateAndTime.toString("yyyy.MM.dd hh:mm:ss")
      在这里插入图片描述

更多格式可参考Qt Creator中的帮助:QString QDateTime::toString(QStringView format) const
在这里插入图片描述

    1. 获取UTC时间:QDateTime::currentDateTimeUtc();
      UTC与本地时间的转换:toUTC() - toLocalTime()
      在这里插入图片描述
    QDateTime Data(QDate(2024, 1, 2), QTime(8, 30, 0));Data = Data.toUTC();qDebug() << Data;Data = Data.toLocalTime();qDebug() << Data;
    1. 使用其构造函数或set函数设定时间:QDateTime Data(QDate(2024, 1, 2), QTime(8, 30, 0));
      在这里插入图片描述
    QDateTime Data(QDate(2024, 1, 2), QTime(8, 30, 0));qDebug() << Data;Data.setDate(QDate(2024, 1, 1));qDebug() << Data;

二、时间戳

使用时间戳的优势:

  1. 统一性:时间戳是一个数字,在不同的平台和系统中都可以统一表示时间。而时间的表示方式在不同的地区和文化中可能有所不同,例如日期顺序、时间格式等。
  2. 精确度:时间戳通常以毫秒为单位,可以提供更高的精确度。而时间的表示可能只能精确到秒或分钟级别。
  3. 方便计算:使用时间戳进行时间计算更加方便。可以直接进行加减运算,获取时间差,而不需要考虑不同的时间单位和格式化问题。
  4. 时区处理:时间戳通常是以UTC(协调世界时)表示,可以消除时区的影响。在不同的时区使用时间表示时,可能需要进行时区转换,而时间戳则可以直接用于全球范围内的时间计算。
    1. 获取时间戳
      QDateTime::currentMSecsSinceEpoch() - 返回自1970-01-01T00:00:00以来的毫秒数。
      QDateTime::currentSecsSinceEpoch() - 返回自时间1970-01-01T00:00:00以来的秒数。

几种获取系统时间戳方式的对比:https://www.jianshu.com/p/c9b775d831fb

    1. 时间戳和时间的转换 (例子如下所示):
      QDateTime::fromMSecsSinceEpoch - toMSecsSinceEpoch()
      QDateTime::fromSecsSinceEpoch - toSecsSinceEpoch()
      在这里插入图片描述
#include "mainwindow.h"
#include <QApplication>
#include <QDateTime>
#include <QDebug>int main(int argc, char *argv[])
{QApplication a(argc, argv);QDateTime currentDateAndTime = QDateTime::currentDateTime(); // 获取当前日期和时间qDebug()<<currentDateAndTime.toSecsSinceEpoch();qDebug()<<QDateTime::fromSecsSinceEpoch(currentDateAndTime.toSecsSinceEpoch());return a.exec();
}

三、时间计算 (重载运算符)

    1. QDateTime::daysTo(const QDateTime &other) const - 返回从该日期时间到另一日期时间的天数。天数是指从这个日期时间到另一个日期时间之间达到午夜的次数。这意味着从23:55到第二天0:05的10分钟差算作一天。如果其他日期时间早于此日期时间,则返回的值为负数,例子如下:
      在这里插入图片描述
	QDateTime startDate(QDate(2012, 7, 6), QTime(8, 30, 0));QDateTime endDate(QDate(2012, 7, 7), QTime(16, 30, 0));qDebug() << "Days from startDate to endDate: " << startDate.daysTo(endDate);startDate = QDateTime(QDate(2012, 7, 6), QTime(23, 55, 0));endDate = QDateTime(QDate(2012, 7, 7), QTime(0, 5, 0));qDebug() << "Days from startDate to endDate: " << startDate.daysTo(endDate);qSwap(startDate, endDate); // Make endDate before startDate.qDebug() << "Days from startDate to endDate: " << startDate.daysTo(endDate);
    1. QDateTime::addDays(qint64 ndays) const - 返回一个QDateTime对象,该对象包含的日期时间比该对象的日期时间晚ndays天(如果ndays为负数,则早于ndays天)。(还有 addMonths(), addYears(), addSecs()等)
      在这里插入图片描述
	QDateTime Data(QDate(2024, 1, 2), QTime(8, 30, 0));qDebug() << Data.addYears(1);qDebug() << Data.addMonths(1);qDebug() << Data.addDays(1);qDebug() << Data.addSecs(1);
    1. QDateTime::operator!= - 如果此日期时间与其他日期时间不同,则返回true;否则返回false。(还有<,==等可以比较两个时间的大小)
      在这里插入图片描述
    QDateTime D1(QDate(2024, 1, 2), QTime(8, 30, 0));QDateTime D2(QDate(2024, 1, 1), QTime(16, 30, 0));qDebug() << "D1 大于 D2:" << (D1 < D2);
    1. 用的比较少的输入输出流 (大多时候用时间戳)
      QDataStream &operator<<(QDataStream &out, const QDateTime &dateTime)
      QDataStream &operator>>(QDataStream &in, QDateTime &dateTime)

相关文章:

Qt 基础之QDataTime

Qt 基础之QDataTime 引言一、获取(设定)日期和时间二、时间戳三、时间计算 (重载运算符) 引言 QDataTime是Qt框架中用于处理日期和时间的类。它提供了操作和格式化日期、时间和日期时间组合的功能。QDataTime可以用于存储和检索日期和时间、比较日期和时间、对日期和时间执行算…...

美国将限制中国,使用Azure、AWS等云,训练AI大模型

1月29日&#xff0c;美国商务部在Federal Register&#xff08;联邦公报&#xff09;正式公布了&#xff0c;《采取额外措施应对与重大恶意网络行为相关的国家紧急状态》提案。 该提案明确要求美国IaaS&#xff08;云服务&#xff09;厂商在提供云服务时&#xff0c;要验证外国…...

智能指针|巨巨巨详细

智能指针 shared_ptrshared_ptr的基本用法使用shared_ptr要注意的问题 unique_ptr独占的智能指针weak_ptr弱引用的智能指针weak_ptr的基本用法weak_ptr返回this指针weak_ptr解决循环引用问题 weak_ptr使用注意事项 智能指针 C程序设计中使用堆内存是非常频繁的操作&#xff0…...

硬件知识(2) 手机的传感器-sensor

#灵感# 看看小米在干啥 手机型号&#xff1a;Redmi Note 13 Pro&#xff0c;解读一下它宣传的手机卖点。 目录 宣传1&#xff1a;1/1.4" 大底&#xff0c;f/1.65 大光圈&#xff0c; 宣传2&#xff1a;支持 2 亿像素超清直出&#xff0c;分辨率高达 16320 x 12240 宣…...

Kotlin快速入门系列9

Kotlin对象表达式和对象声明 对象表达式 有时&#xff0c;我们想要创建一个对当前类有些许修改的对象同时又不想重新声明一个子类。如果是Java&#xff0c;可以用匿名内部类的概念来解决这个问题。kotlin的对象表达式和对象声明就是为了实现这一点(创建一个对某个类做了轻微改…...

nginx+nginx-rtmp-module+ffmpeg进行局域网推流rtmp\m3u8

局域网推流的简单方式 这里以ubuntu为例 一、先下载安装包 nginx、nginx-rtmp-module&#xff0c;再一起安装 # 下载nginx # 这里我安装的是 nginx-1.10.3 版本 cd /usr/software wget http://nginx.org/download/nginx-1.25.0.tar.gz tar -zxvf nginx-1.25.0.tar.gz# 下载ng…...

PMP备考笔记:模拟考试知识点总结

1. 答题思路&#xff1a;优先看问题&#xff0c;可节省时间。 2. 考试就按照考试的套路来做&#xff0c;不要过多考虑。 开发团队只专注当前冲刺目标&#xff0c;产品负责人对PB排优先级。 收集需求工具-原型法&#xff1a;能够让用户提前体验&#xff0c;减少返工的风险。 …...

docker程序镜像的安装

目录 一、流程 二、总结 一、 流程 对文中脚本测试前提默认系统已安装docker docker程序部署命令脚本 加载已打包的docker程序 docker load < sto...p.tar创建网络 名称为c…m子网subnet 172.27.16.1/24网关gateway 172.27.16.254-d 指定网络驱动程序 docker network cre…...

openssl3.2 - .pod文件的查看方法

文章目录 .pod文件的查看方法概述笔记初步的解决方法备注 - pod2html.bat的详细用法好像Perl就自带这个BATEND .pod文件的查看方法 概述 看到openssl源码目录下有很多.pod文件, 软件发布的帮助内容都在里面. 当make install后, 大部分的.pod都会转成html文件, 但是有一部分…...

力扣238. 除自身以外数组的乘积(前后缀和)

Problem: 238. 除自身以外数组的乘积 文章目录 题目描述思路复杂度Code 题目描述 思路 思路1&#xff1a; 1.先求取数组的包括当前下标值得前后缀乘积&#xff08;利用两个数组记录下来分别为leftProduct和rightProduct&#xff09; 2.当求取一个下标为i的数组中的元素&#x…...

Java玩转《啊哈算法》排序之快速排序

心无挂碍&#xff0c;无挂碍故&#xff0c;无有恐怖&#xff0c;远离颠倒梦想&#xff0c;究竟涅槃。 地图 引子代码地址快速排序核心代码优劣完整代码演示 课后习题 引子 搭嘎好&#xff01;本人最近看的《啊哈算法》这本书写的确实不错&#xff0c;生动形象&#xff0c;在保…...

静态代理IP该如何助力Facebook多账号注册运营?

在Facebook运营中&#xff0c;充分利用静态代理IP是多账号运营的关键一环。通过合理运用静态代理IP&#xff0c;不仅可以提高账号安全性&#xff0c;还能有效应对Facebook的算法和限制。以下是这些关键点&#xff0c;可以帮助你了解如何运用静态代理IP进行Facebook多账号运营&a…...

npm 淘宝镜像正式到期

由于node安装插件是从国外服务器下载&#xff0c;如果没有“特殊手法”&#xff0c;就可能会遇到下载速度慢、或其它异常问题。 所以如果npm的服务器在中国就好了&#xff0c;于是我们乐于分享的淘宝团队干了这事。你可以用此只读的淘宝服务代替官方版本&#xff0c;且同步频率…...

【Spring Boot 3】【@Scheduled】多线程执行定时任务

【Spring Boot 3】【@Scheduled】多线程执行定时任务 背景介绍开发环境开发步骤及源码工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新…...

TypeScript 基础学习

TypeScript是具有类型语法的JavaScript。 是JavaScript超集&#xff0c;可以编译为纯JavaScript&#xff0c;构建安全可靠的代码&#xff0c;进行类似 babel 的转换。 一种基于JavaScript的强类型、静态的编程语言&#xff0c;提供了类型检测的工具。 特性&#xff1a; 易读…...

《CSS3》田字网格背景(外实线内虚线)的实现

一、前言 记录一些有趣的CSS实现方式&#xff0c;总所周知&#xff0c;当一段效果可以通过CSS实现的时候&#xff0c;绝不使用Javascript来实现&#xff0c;因此记录一些有意思的CSS效果&#xff0c;一来是方便自己学习&#xff0c;另一来是方便以后在需要使用到的时候能快速找…...

图书管理系统(ArrayList和LinkedList)--versions3.0

目录 一、项目要求&#xff1a; 二、项目环境 三、项目使用的知识点 四、项目代码 五、项目运行结果 六、项目难点分析 图书管理系统--versions1.0&#xff1a; 图书管理系统--versions1.0-CSDN博客文章浏览阅读981次&#xff0c;点赞29次&#xff0c;收藏17次。本文使用…...

游戏开发丨基于Pygame的AI版贪吃蛇小游戏

文章目录 写在前面需求分析程序设计程序分析运行结果系列文章写在后面 写在前面 本期内容 基于pygame的AI版贪吃蛇小游戏 所需环境 pythonpycharm或anacondapygame 下载地址 https://download.csdn.net/download/m0_68111267/88789665 需求分析 本游戏使用Pygame模块开…...

qt-C++笔记之QStringList、QList<QString>、QString、QChar、QList<QChar>区别

qt-C笔记之QStringList、QList、QString、QChar、QList区别 —— 杭州 2024-01-30 凌晨0:27 参考博文&#xff1a;qt-C笔记之QStringList code review! 文章目录 qt-C笔记之QStringList、QList<QString>、QString、QChar、QList<QChar>区别1.Qt的字符容器类1.QSt…...

python爬虫学习之解析_BeautifulSoup

目录 一、bs4的基本使用 &#xff08;1&#xff09;导入 &#xff08;2&#xff09;创建对象 二、节点定位 1、根据标签名查找节点 2、基本函数使用 &#xff08;1&#xff09;find &#xff08;2&#xff09;find_all &#xff08;3&#xff09;select 三、节点信息 1、获取节…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...