《Qt5+QDate和QTime获取当前系统日期和时间》

QDate对象包含日历日期,即年,月,日的数字。它可以从系统时钟读取当前日期,提供了比较日期和操作日期的功能。例如,可以在日期中添加和减去天,月和年。QTime对象包含一个时钟时间,即自午夜的小时,分钟,秒和毫秒数。它可以从系统时钟读取当前时间并测量经过时间的跨度,它提供了通过添加毫秒数来比较时间和操作时间的功能。

 

QDate简单示例


#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDate"
#include "QDebug"
#include "QString"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QDate D1;
    QDate D2(1995,1,26);
    qDebug() << "D2:" <<D2;
    D1=QDate::currentDate();
    qDebug() << "D1:" << D1;//获取当前日期
    qDebug() << "year:" << D1.year();//获取年
    qDebug() << "month:" << D1.month();//获取月
    qDebug() << "day:" << D1.day();//获取日
    qDebug() << "isValid:" << D1.isValid();//日期是否合法
    qDebug() << "dayOfWeek:" << D1.dayOfWeek();//今天是周几
    qDebug() << "dayOfYear:" << D1.dayOfYear();//当前是这一年的第多少天
    qDebug() << "daysInMonth:" << D1.daysInMonth();//这个月有多少天
    qDebug() << "daysInYear:" << D1.daysInYear();//这一年有多少天
    qDebug() << "isNull:" << D1.isNull();//日期是否为空,为空返回true
    qDebug() << "daysTo:" << D1.daysTo(D2);//比较两个日期相差多少天,D2比D1早为负数
    qDebug() << "isLeapYear:" << QDate::isLeapYear(D1.year());//是否闰年
}

MainWindow::~MainWindow()
{
    delete ui;
}

输出结果

D2: QDate("1995-01-26")
D1: QDate("2018-11-21")
year: 2018
month: 11
day: 21
isValid: true
dayOfWeek: 3
dayOfYear: 325
daysInMonth: 30
daysInYear: 365
isNull: false
daysTo: -8700
isLeapYear: false

 

QTime简单示例


#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QTime"
#include "QDebug"
#include "QString"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QTime T1;
    QTime T2(12,9,26);
    QTime T3;
    qDebug() << "T2:" <<T2;
    T1=QTime::currentTime();
    qDebug() << "T1:" << T1;//获取当前日期
    qDebug() << "hour:" << T1.hour();//获取时
    qDebug() << "minute:" << T1.minute();//获取分
    qDebug() << "second:" << T1.second();//获取秒
    qDebug() << "msec:" << T1.msec();//获取毫秒

    qDebug() << "isValid:" << T1.isValid();//时间是否合法
    qDebug() << "secsTo:" << T1.secsTo(T2);//比较两个时间相差多少秒,T2比T1早为负数
    qDebug() << "msecsTo:" << T1.msecsTo(T2);//比较两个时间相差多少毫秒,T2比T1早为负数
    qDebug() << "msecsSinceStartOfDay:" << T1.msecsSinceStartOfDay();//返回自当天的毫秒数
    qDebug() << "isNull:" << T1.isNull();//日期是否为空,为空返回true
    T3.start();
    qDebug() << "T3:" << T3;//获取T3
    for(int i=0;i<1000000;i++)
    {
        ;
    }
    T3.elapsed();
    qDebug() << "T3:" << T3;//获取T3
}

MainWindow::~MainWindow()
{
    delete ui;
}

输出结果

T2: QTime("12:09:26.000")
T1: QTime("11:57:10.193")
hour: 11
minute: 57
second: 10
msec: 193
isValid: true
secsTo: 736
msecsTo: 735807
msecsSinceStartOfDay: 43030193
isNull: false
T3: QTime("11:57:10.194")
T3: QTime("11:57:10.194")

 

完整代码


QDate简单示例链接:https://pan.baidu.com/s/1zOM-PDjDhsKboKCxSlp50A 
提取码:xo0j 

QTime简单示例链接:https://pan.baidu.com/s/1HIyJTbIbrpO6CLlq9CalCA 
提取码:7bm5 

 

<think>好的,我现在需要帮助用户解决在Qt获取当前时间的问题。根据用户的问题,他想知道如何用QDateTime、QTimeQDate来取得当前时刻的代码示例。首先,我应该回顾用户提供的引用内容,看看里面有没有相关的信息。 用户引用了三个资料,其中引用[1]提到使用QDateTime::currentDateTime()来获取系统当前时间,并用toString方法格式化输出。引用[2]介绍了QDateTime的不同构造方式,包括本地时间、UTC等。引用[3]则展示了如何通过addMonthsaddYears等方法进行时间的加减操作,这些可能当前时间相关但可能不是用户当前需要的。 接下来,我需要确保回答覆盖用户提到的所有可能需求:QDateTime、QTimeQDate。用户的问题明确提到了这三个类,所以每个都应该有示例代码。例如,QDateTime获取当前日期时间QTime获取当前时间部分,QDate获取当前日期部分。然后,格式化字符串的部分也很重要,用户可能需要不同的格式,比如年月日时分秒,或者单独的时间日期。 另外,用户可能需要了解如何获取UTC时间,这在引用[2]中有所提及。所以应该包括使用currentDateTimeUtc()方法的例子。同时,不同的格式化选项,比如毫秒或者不带秒的情况,也需要考虑进去。 需要检查每个示例代码的正确性,确保语法正确,比如QDateTime::currentDateTime()是否正确,toString的格式是否正确。同时,注意中文字符的使用,比如“yyyy-MM-dd”是否适用于Qt,或者是否应该用英文字符,但根据引用中的例子,用户可能已经接受中文格式,但实际Qt中格式字符是英文的,比如“hh”代表小时,而月份是大写的MM,所以需要确保示例中的格式正确。 最后,根据用户之前的引用,尤其是引用[3],虽然用户现在的问题是关于获取当前时间,但可能后续会问到时间的加减,不过当前问题不需要涉及,所以可以暂不提及,除非用户有其他需求,但根据问题描述,用户现在只需要获取当前时间的方法。 生成相关问题的时候,需要考虑用户可能进一步的问题,比如格式化、时区转换、时间差计算等。例如,如何转换时区,如何计算两个时间之间的间隔,或者如何比较时间先后。这些问题都是基于当前获取时间方法的自然延伸。 总结步骤: 1. 分别用QDateTime、QTimeQDate获取当前时间。 2. 提供不同格式化输出的例子。 3. 包括UTC时间获取方法。 4. 确保代码正确,语法正确。 5. 生成相关问题,帮助用户深入理解。</think>在Qt获取当前时刻可以通过以下三种方式实现,分别对应不同的精度需求: ### 一、QDateTime完整时间获取 ```cpp // 获取当前日期+时间 QDateTime currentDateTime = QDateTime::currentDateTime(); QString formattedDateTime = currentDateTime.toString("yyyy-MM-dd HH:mm:ss.zzz"); // 输出示例:2023-08-25 15:30:45.123 ``` ### 二、QTime精确到秒级 ```cpp // 获取当前时分秒 QTime currentTime = QTime::currentTime(); QString formattedTime = currentTime.toString("HH:mm:ss"); // 输出示例:15:30:45 ``` ### 三、QDate日期获取 ```cpp // 获取当前年月日 QDate currentDate = QDate::currentDate(); QString formattedDate = currentDate.toString("yyyy/MM/dd"); // 输出示例:2023/08/25 ``` ### 四、UTC标准时间获取 ```cpp QDateTime utcDateTime = QDateTime::currentDateTimeUtc(); QString utcString = utcDateTime.toString("yyyy-MM-ddTHH:mm:ssZ"); // 输出示例:2023-08-25T07:30:45Z(UTC+0时区) ``` [^1]: 当前时间获取核心方法是`QDateTime::currentDateTime()`,其返回值的精度与系统时钟一致,通常精确到毫秒级[^1]。时区处理需要注意默认使用本地时区,若需要UTC时间需显式调用`currentDateTimeUtc()`[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值