一些理论首先:
根据Qt文档,QDateTime::toSecsFromEpoch()函数:
返回日期时间,作为自1970-01-01T00:00:00.000协调世界时间以来已过去的秒数。
以及:
..。对于所有有效日期,此函数返回唯一值。
下面是这个特定函数在Qt文档中的描述的链接。
我的实施
下面是几行试图利用此函数的功能的代码:
#include <QtCore>
#include <iostream>
int main()
{
QDateTime* time = new QDateTime(QDateTime::currentDateTime());
QString secs1 = QString::number(time->toSecsSinceEpoch());
std::cout << secs1.toStdString() << std::endl;
std::this_thread::sleep_for(std::chrono::milliseconds(10000));
QString secs2 = QString::number(time->toSecsSinceEpoch());
std::cout << secs2.toStdString();
}现在,secs1和secs2变量应该包含不同的值,但事实并非如此.以下是程序的输出:
1601491247
1601491247等待10秒后,secs2的值应该是不同的。我不知道为什么不是。
QDateTime对象是否以错误的方式被初始化?或者可能是某个系统相关的错误?我搜索了与我的问题有关的信息,但一无所获。请帮帮忙。
发布于 2020-09-30 18:53:54
QDateTime不会不断更新。它存储特定的日期和时间。所以不管你等多久,它都会给你同样的价值。要修复您的代码,您可以这样做:
QDateTime time1 = QDateTime::currentDateTime();
QString secs1 = QString::number(time1.toSecsSinceEpoch());
std::cout << secs1.toStdString() << std::endl;
std::this_thread::sleep_for(std::chrono::milliseconds(10000));
QDateTime time2 = QDateTime::currentDateTime();
QString secs2 = QString::number(time2.toSecsSinceEpoch());
std::cout << secs2.toStdString();发布于 2020-09-30 19:00:16
“现在,secs1和secs2变量应该包含不同的值,但事实并非如此.”
不他们不..。
QDateTime不是一个时钟,它只是一个类,可以将任何给定的时刻表示为DateTime对象。
https://stackoverflow.com/questions/64143939
复制相似问题