问题描述
首先要有一些理论
根据Qt文档的QDateTime :: toSecsFromEpoch()函数:
将日期时间返回为自1970年1月1日T00:00:00.000(协调世界时)以来经过的秒数。
和:
我的实现
#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();
,
“现在,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对象。