gpt4 book ai didi

c++ - QDateTime 的问题::fromMSecsSinceEpoch

转载 作者:太空宇宙 更新时间:2023-11-04 13:52:02 35 4
gpt4 key购买 nike

我尝试将 1970 年之后的秒数读入 QDateTime。即:startT = 1.390309552938E9

因此我使用:

QDateTime time = QDateTime::fromMSecsSinceEpoch(startT*1000); // *1000 because a have seconds while qt expecting milliseconds

现在我想将这与我使用 QDateTime::toString 获得的另一次进行比较:

QDate startDate = QDate::fromString(datestr, "yyyyMMdd");
QTime time = QTime::fromString(timestr, "hhmmss");
QDateTime datetime = QDateTime(date, time, Qt::UTC);

datestr 和 timestr 看起来像这样的例子:'20140121' 和 '130358'

我想比较 timedatetime 是否相等(以秒为单位,所以毫秒除外)因此我使用这样的东西:

if (time < datetime)

但它不起作用?!有人可以帮我吗?

谢谢!

编辑:

我愿意:

QDateTime time = QDateTime::fromMSecsSinceEpoch(startT*1000);

然后我将此信息(时间)返回给:

void Data::setTime(const QDateTime& obTime)
{
time = QDateTime(obTime);
}

obTime 是我的时间

稍后在代码中我通过以下方式返回我的值:

QDateTime time = newData.getTime();

任何 getTime 是:

QDateTime MetObs::getTime() const
{
return time;
}

datetime的获取同上。 “时间”的两个定义并不复杂,因为它在程序的另一个位置

然后我尝试使用:

if (time < datetime)

其他信息:

当我将值打印为字符串时:

QString timestring = time.toString(Qt::ISODate);
QString datetimestring = datetime.toString(Qt::ISODate);
cout << timestring.toAscii().data() << endl;
cout << datetimestring.toAscii().data() << endl;

结果是:

2014-01-21T13:03:59
2014-01-21T13:03:58Z

最佳答案

这样比较:

time.toTime_t() == datetime.toTime_t()

该方法返回自纪元以来的秒数。

注1:为什么用<如果你想测试是否相等?

注意 2:您不应将时间值存储在 double 值中 - 这可能会导致精度损失。 uint32_t 以秒为宜,uint64_t 以 r 毫秒为宜。

关于c++ - QDateTime 的问题::fromMSecsSinceEpoch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23106090/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com