我尝试将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'
我想比较time
和datetime
是否相等(对于秒,所以除了毫秒)因此我使用这样的东西:
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;
}
日期时间的检索与上面提到的相同。 &#34; time&#34;的两个定义没有复杂性。因为它在程序的另一个位置
而不是我尝试使用:
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
答案 0 :(得分:0)
比较如下:
time.toTime_t() == datetime.toTime_t()
该方法返回自纪元以来的秒数。
注1:如果要测试相等性,为什么使用<
?
注意2:您不应将时间值存储为double - 这可能会导致精度损失。 uint32_t适用于秒,uint64_t需要毫秒。