在Qt中,QDateEdit是用于选择日期的微调框,QTimeEdit是用于选择小时和分钟的微调框

QDateTimeEdit则是基于QDateEdit和QTimeEdit的组合控件,能够同时显示日期和时间,并允许用户以交互方式编辑日期

常用属性
| 属性 | 说明 | 
| dateTime | 时间日期的值,形如2000/1/1 0:00 | 
| date | 单纯日期的值,形如2000/1/1 | 
| time | 单纯时间的值,形如0:00 | 
| displayFormat | 时间日期格式,形如yyyy/M/d H:mm 2024/07/31 09:35 
 | 
| minimumDateTime | 最小时间日期 | 
| maximumDateTime | 最大时间日期 | 
| timeSpec | 
 | 
核心信号
| 信号 | 说明 | 
| dateChanged(QDate) | 日期改变时触发 | 
| timeChanged(QTime) | 时间改变时触发 | 
| dateTimeChanged(QDateTime) | 时间日期任意一个改变都会触发 | 
QDateTime
QDateTime是处理日期和时间的类,提供了丰富的功能和方法来管理和操作日期时间数据,支持高精度和灵活的操作
常用API
- 获取日期/时间 //静态成员函数 static QDateTime currentDateTime();//返回当前本地日期时间 static QDateTime currentDateTimeUTC();//返回当前UTC日期时间 //成员函数 QDate date() const;//返回日期部分 QTime time() const;//返回时间部分
-  设置日期/时间 void setDate(const QDate &date);//设置日期部分 void setTime(const QTime &time);//设置时间部分 void setDateTime(const QDateTime &dateTime);//设置日期和时间
-  格式化和解析 //将日期时间对象格式化为指定格式的字符串 QString toString(Qt::DateFormat format = Qt::TextDate); //将指定格式的日期时间字符串,转化为QDateTime static QDateTime fromString(const QString &string, Qt::DateFormat format = Qt::TextDate);
-  日期/时间运算 QDateTime addDays(qint64 days);//增加指定天数后的日期时间 QDateTime addSecs(qint64 secons);//增加指定秒数后的日期时间 QDateTime addMonths(int months);//增加指定月数后的日期时间 QDateTime addYears(int years);//增加指定年数后的日期时间 //计算两个日期时间之间的差值 qint64 daysTo(const QDateTime &other);//计算相差多少天,计算时只看日期不看时间 qint64 secsTo(const QDateTime &other);//计算相差多少秒
-  时区操作 QDateTime toLocalTime();//将UTC时间转换成本地时间返回 QDateTime toUTC();//将本地时间按UTC时间返回
示例:计算两个日期之间相差的时间
#include "widget.h"
#include "ui_widget.h"
#include <QCalendarWidget>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //设置显示格式
    ui->dateTimeEdit_past->setDisplayFormat("yyyy-M-d h:mm:ss");
    ui->dateTimeEdit_cur->setDisplayFormat("yyyy-M-d h:mm:ss");
}
Widget::~Widget()
{
    delete ui;
}
void Widget::on_pushButton_clicked()
{
    //获取两个日期时间
    QDateTime pastTime = ui->dateTimeEdit_past->dateTime();
    QDateTime curTime = ui->dateTimeEdit_cur->dateTime();
    int seconds = pastTime.secsTo(curTime);
    //计算相差的天数和小时数
    int hours = (seconds / 3600) % 24;
    int days = (seconds / 3600 / 24);
    ui->label->setText(QString("已经爱你") + QString::number(days) + "天零"
                       + QString::number(hours) + "小时");
}


















