2009-08-04 170 views
2

我正在使用Qt来解析包含UTC时间戳的XML文件。当然,在该计划中,我希望他们改变当地时间。在XML文件中,时间戳看起来像这样:“2009-07-30T00:32:00Z”。什么是正确的方式来处理日期时间从Qt中的字符串输入日期时间

不幸的是,当使用QDateTime :: fromString()方法时,这些时间戳被解释为在本地时区中。解决这个问题的方法是从当前时间加上或减去正确的时区偏移量,以将其转换为“真”本地时间。然而,是否有任何方法可以让Qt意识到我正在导入UTC时间戳,然后自动将其转换为当地时间?

+0

只是作为参考,具体的代码片段,做相似/同样的与你所提到的在`Qt`s跟踪网站https://bugreports.qt-project.org/browse/可用QTBUG-71 – IsaacS 2012-08-03 19:55:48

回答

7

做这样的:

QDateTime timestamp = QDateTime::fromString(thestring); 
timestamp.setTimeSpec(Qt::UTC); // mark the timestamp as UTC (but don't convert it) 
timestamp = timestamp.toLocalTime() // convert to local time 
1

尝试使用setTime_t函数。

+0

这里是Qt4版本; http://doc.trolltech.com/4.5/qdatetime.html#setTime_t修改父母的好答案btw! – ismail 2009-08-04 06:51:12

+0

对不起,做了谷歌搜索,那是我找到的。没有检查版本。已修复 – Marius 2009-08-04 06:52:46