1

我尝试将 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;
}

日期时间的检索同上。“时间”的两个定义并不复杂,因为它位于 Programm 的另一个位置

而不是我尝试使用:

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
4

1 回答 1

0

像这样比较:

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

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

<注 1:如果要测试是否相等,为什么要使用?

注意 2:您不应将时间值存储为双精度值 - 这可能会导致精度损失。uint32_t 适用于几秒,uint64_t 需要几毫秒。

于 2014-04-16T10:36:49.413 回答