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

ora*_*ius 2 c++ timezone qt datetime

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

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

roh*_*npm 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
Run Code Online (Sandbox Code Playgroud)