首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QDateTime::fromMSecsSinceEpoch的问题

QDateTime::fromMSecsSinceEpoch的问题
EN

Stack Overflow用户
提问于 2014-04-16 18:00:41
回答 1查看 2.5K关注 0票数 1

我试着把1970年后的秒数读成QDateTime。即: startT = 1.390309552938E9

因此,我使用:

代码语言:javascript
复制
QDateTime time = QDateTime::fromMSecsSinceEpoch(startT*1000); // *1000 because a have seconds while qt expecting milliseconds

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

代码语言:javascript
复制
QDate startDate = QDate::fromString(datestr, "yyyyMMdd");
QTime time = QTime::fromString(timestr, "hhmmss");
QDateTime datetime = QDateTime(date, time, Qt::UTC);

datestr和timestr如下所示:'20140121‘和'130358’

我想比较一下timedatetime是否相等(等于秒,所以除了毫秒之外),所以我使用类似这样的东西:

代码语言:javascript
复制
if (time < datetime)

但是它不能工作?!有人能帮帮我吗?

谢谢!

编辑:

我有:

代码语言:javascript
复制
QDateTime time = QDateTime::fromMSecsSinceEpoch(startT*1000);

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

代码语言:javascript
复制
void Data::setTime(const QDateTime& obTime)
{
    time = QDateTime(obTime);
}

其中obTime是我的时代

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

代码语言:javascript
复制
QDateTime time = newData.getTime();

任何getTime都是:

代码语言:javascript
复制
QDateTime MetObs::getTime() const
{
    return time;
}

datetime的检索与上面提到的相同。时间的两个定义并不复杂,因为它位于程序的另一个位置

然后我试着使用:

代码语言:javascript
复制
if (time < datetime)

另一条信息:

当我使用以下命令将值打印为字符串时:

代码语言:javascript
复制
QString timestring = time.toString(Qt::ISODate);
QString datetimestring = datetime.toString(Qt::ISODate);
cout << timestring.toAscii().data() << endl;
cout << datetimestring.toAscii().data() << endl;

结果是这样的:

代码语言:javascript
复制
2014-01-21T13:03:59
2014-01-21T13:03:58Z
EN

回答 1

Stack Overflow用户

发布于 2014-04-16 18:36:49

如下所示:

代码语言:javascript
复制
time.toTime_t() == datetime.toTime_t()

该方法返回从纪元开始的秒数。

注意1:如果你想测试等价性,为什么要使用<

注意2:你不应该以双精度存储时间值-这可能会导致精度损失。uint32_t适用于数秒,而uint64_t则需要r毫秒。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23106090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档