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

QDateTime 使用详解-LMLPHP

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 其它文章

10-11 03:46