在Qt中从字符串输入的日期时间中处理时区的正确方法是什么

时间:2009-08-04 06:41:54

标签: c++ qt datetime timezone

我正在使用Qt来解析包含UTC时间戳的XML文件。当然,在该计划中,我希望他们改为当地时间。在XML文件中,时间戳如下所示:“2009-07-30T00:32:00Z”。

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

3 个答案:

答案 0 :(得分: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 :(得分:1)

尝试使用setTime_t功能。

答案 2 :(得分:1)

请注意,Qt中尚未提供全时区支持,但可能会在将来的版本中使用。

http://bugreports.qt-project.org/browse/QTBUG-10219