Convertir un QDateTime en UTC en heure locale du système

- Je construire un QDateTime à partir d'une chaîne comme ceci:

QDateTime date = QDateTime::fromString("2010-10-25T10:28:58.570Z", "yyyy-MM-ddTHH:mm:ss.zzzZ");

Je sais que date est en UTC parce que c'est la façon dont il est stocké. Mais quand je veux afficher cette date à l'utilisateur, il doit être dans le local de l'utilisateur de fuseau horaire. date.toLocalTime() semble prometteur, mais il revient exactement à la même date!

Comment puis-je convertir des date du système, heure locale, à afficher à l'utilisateur?

Voici quelques échecs:

#include <QtCore/QCoreApplication>
#include <QtCore/QDateTime>
#include <QtCore/QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QDateTime date = QDateTime::fromString("2010-10-25T10:28:58.570Z", "yyyy-MM-ddTHH:mm:ss.zzzZ");
    QDateTime local = date.toLocalTime();

    qDebug() << "utc: " << date;
    qDebug() << "local: " << local.toString();
    qDebug() << "hax: " << local.toString(Qt::SystemLocaleLongDate);

    return a.exec();
}

De sortie:

utc:  QDateTime("Mon Oct 25 10:28:58 2010")
local:  "Mon Oct 25 10:28:58 2010"
hax:  "Monday, October 25, 2010 10:28:58 AM"

OriginalL'auteur andrewrk | 2010-10-27