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

qt QDateTime详解

1. 概述

QDateTime 是 Qt 框架中用于处理日期和时间的类。它将 QDate 和 QTime 组合在一起,提供了日期时间的统一处理方案。QDateTime 可以精确到毫秒,并支持时区处理。

2. 重要方法

构造函数:

  •    QDateTime()  构造无效的日期时间
  •    QDateTime(const QDate &date, const QTime &time, Qt::TimeSpec spec = Qt::LocalTime)
  •    QDateTime::currentDateTime()  获取当前日期时间

 日期时间操作:

  •    addDays(qint64 days)  添加天数
  •    addMonths(int months)  添加月份
  •    addYears(int years)  添加年份
  •    addSecs(qint64 secs)  添加秒数
  •    addMSecs(qint64 msecs)  添加毫秒数

 获取信息:

  •    date()  获取日期部分
  •    time()  获取时间部分
  •    toString()  转换为字符串
  •    toTime_t()  转换为Unix时间戳

3. 重要信号

QDateTime 作为值类型,本身不发送信号。但在 QDateTimeEdit 控件中有以下相关信号:

  •  dateTimeChanged(const QDateTime &datetime)
  •  dateChanged(const QDate &date)
  •  timeChanged(const QTime &time)

4. 常用枚举类型

Qt::DateFormat:

  •  Qt::TextDate      // 文本格式 (例如: "Mon May 20 03:40:13 1998")
  •  Qt::ISODate       // ISO 8601格式 (例如: "19980520T03:40:13")
  •  Qt::SystemLocaleDate  // 系统本地格式
  •  Qt::LocalDate     // 本地格式
     
#include <QDateTime>
#include <QDebug>

int main() {
    // 获取当前日期时间
    QDateTime currentDateTime = QDateTime::currentDateTime();
    qDebug() << "当前日期和时间:" << currentDateTime.toString();

    // 格式化输出
    qDebug() << "自定义格式:" << currentDateTime.toString("yyyy-MM-dd hh:mm:ss");

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

    // 从时间戳创建QDateTime
    QDateTime fromTimestamp = QDateTime::fromSecsSinceEpoch(timestamp);
    qDebug() << "从时间戳创建:" << fromTimestamp.toString();

    // 日期时间计算
    QDateTime tomorrow = currentDateTime.addDays(1);
    qDebug() << "明天:" << tomorrow.toString();

    QDateTime nextMonth = currentDateTime.addMonths(1);
    qDebug() << "下个月:" << nextMonth.toString();

    // 比较日期时间
    if(currentDateTime < tomorrow) {
        qDebug() << "当前时间早于明天";
    }

    // 获取日期和时间分量
    qDebug() << "年:" << currentDateTime.date().year();
    qDebug() << "月:" << currentDateTime.date().month();
    qDebug() << "日:" << currentDateTime.date().day();
    qDebug() << "时:" << currentDateTime.time().hour();
    qDebug() << "分:" << currentDateTime.time().minute();
    qDebug() << "秒:" << currentDateTime.time().second();

    return 0;
}

觉得有帮助的话,打赏一下呗。。

           

需要商务合作(定制程序)的欢迎私信!! 


http://www.kler.cn/a/412279.html

相关文章:

  • shell(5)字符串运算符和逻辑运算符
  • Spring Boot 2 和 Spring Boot 3 中使用 Spring Security 的区别
  • 计算机网络----基本概念
  • vulnhub靶场之corrosion靶场1
  • 3.http模块
  • 【Flink】快速理解 FlinkCDC 2.0 原理
  • 【书生大模型实战营第四期】评测 InternLM-1.8B 实践
  • LSA详情与特殊区域
  • Pydantic 数据验证
  • 1- 9 C 语言面向对象
  • 差分 + 模拟,CF 815A - Karen and Game
  • 实现qt拖拽显示或者播放
  • linux 存储学习(nas)
  • 深入解析 MySQL 索引失效的原因与优化策略
  • 适合中小型公司的自动化测试的测试框架,OpenSourceTest
  • 最新 Blender 4.2 保姆级安装教程(附安装包)
  • Dockerfile常用指令
  • 【Go语言成长之路】编写web应用
  • 深入解读 MongoDB 查询耗时:Execution 和 Fetching 阶段详解
  • BERT的中文问答系统36-1
  • 文件的处理(c语言)
  • BP神经网络的训练窗口详解,BP神经网络详细原理,基于BP神经网络的多分类预测
  • Ubuntu20.04运行DM-VIO
  • Jmeter的组件执行顺序
  • mongodb shard 分片集群基础概念
  • Linux的make/Makefile和进度