QDateTime :: toSecsSinceEpoch似乎不起作用 我的实现

问题描述

首先要有一些理论

根据Qt文档的QDateTime :: toSecsFromEpoch()函数

将日期时间返回为自1970年1月1日T00:00:00.000(协调世界时)以来经过的秒数。

和:

[...]对于所有有效日期,此函数返回一个唯一值。

这是Qt文档中此特定功能的说明的link

我的实现

以下几行代码试图利用此功能功能

#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();
}

现在,secs1secs2变量应该包含不同的值,但事实并非如此…… 这是程序的输出

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();
,

“现在,secs1和secs2变量应该包含不同的值,但事实并非如此...”

不,他们不...

@KafkaListener(id = "MyConsumerID",topicPattern = "${kafka.myTopicsPattern}",groupId = "my-app",containerFactory = "myKafkaListenerContainerFactory") public void receiveMessage(ConsumerRecord<String,byte[]> record) { //save bytes to file //convert file //send file to another service //throw exception if sending failed (auto-commit is true,so I keep message uncommitted in topic in case of exception) } 不是时钟,它只是一个类,用于将任何给定时刻表示为DateTime对象。