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
Vous devez vous connecter pour publier un commentaire.
QDateTime sait si elle est UTC ou heure locale. Par exemple:
Nous avons besoin de dire
date
que c'est une date UTC temps avecdate.setTimeSpec(Qt::UTC)
:De sortie:
Je suis en GMT-7, de sorte que ce qui est juste.
OriginalL'auteur andrewrk
Est à l'aide de QDateTime::toString() de ne pas vous donner les résultats attendus ?
Peut-être vous pouvez essayer d'utiliser un format différent avec
QDateTime::toString(Qt::SystemLocaleLongDate)
ouQDateTime::toString(Qt::SystemLocaleShortDate)
.Sinon, je voudrais essayer d'utiliser QLocale::dateTimeFormat() pour obtenir le format local comme un
QString
et ensuite utiliser cette chaîne que le paramètre de format de QDateTime::toString(), mais je ne pense pas que cela va changer quoi que ce soit.OriginalL'auteur Jérôme