QDateTime::toSecsSinceEpoch() 似乎不起作用
QDateTime::toSecsSinceEpoch() seems not to work
先讲一些理论:
根据 Qt 文档,QDateTime::toSecsFromEpoch() 函数:
Returns the datetime as the number of seconds that have passed since 1970-01-01T00:00:00.000, Coordinated Universal Time.
和:
[...] for all valid dates, this function returns a unique value.
这是 link 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
等待十秒后 secs2
的值应该不同。我不知道为什么不是。
会不会是QDateTime对象的初始化方式不对?或者它可能是一些系统相关的错误?我搜索了与我的问题相关的信息,但一无所获。请帮忙。
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();
"Now, the secs1 and secs2 variables should contain different values, yet this is not the case... "
不,他们不...
QDateTime
不是时钟,只是一个 class 来表示任何给定时刻作为 DateTime 对象。
先讲一些理论:
根据 Qt 文档,QDateTime::toSecsFromEpoch() 函数:
Returns the datetime as the number of seconds that have passed since 1970-01-01T00:00:00.000, Coordinated Universal Time.
和:
[...] for all valid dates, this function returns a unique value.
这是 link 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
等待十秒后 secs2
的值应该不同。我不知道为什么不是。
会不会是QDateTime对象的初始化方式不对?或者它可能是一些系统相关的错误?我搜索了与我的问题相关的信息,但一无所获。请帮忙。
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();
"Now, the secs1 and secs2 variables should contain different values, yet this is not the case... "
不,他们不...
QDateTime
不是时钟,只是一个 class 来表示任何给定时刻作为 DateTime 对象。