QDateTime :: fromMSecsSinceEpoch麻烦

时间:2014-04-16 10:00:41

标签: c++ qt comparison qdatetime

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

日期时间的检索与上面提到的相同。 &#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

1 个答案:

答案 0 :(得分:0)

比较如下:

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

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

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

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