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;
}
觉得有帮助的话,打赏一下呗。。
需要商务合作(定制程序)的欢迎私信!!