2009-08-04 12 views
2

J'utilise Qt pour analyser un fichier XML qui contient des horodatages en UTC. Dans le cadre du programme, bien sûr, j'aimerais qu'ils passent à l'heure locale. Dans le fichier XML, les horodatages ressemblent à ceci: "2009-07-30T00: 32: 00Z".Quelle est la manière correcte de gérer les fuseaux horaires dans l'entrée de datetimes d'une chaîne dans Qt

Malheureusement, lors de l'utilisation de la méthode QDateTime :: fromString(), ces horodatages sont interprétés comme étant dans le fuseau horaire local. Le moyen le plus astucieux de résoudre ce problème est d'ajouter ou de soustraire le décalage de fuseau horaire correct à partir de ce moment pour le convertir en "vrai" heure locale. Cependant, y a-t-il un moyen de faire savoir à Qt que j'importe un horodatage UTC et que je le convertis automatiquement en heure locale?

+0

Tout comme une référence, un extrait de code concret qui fait semblable/même avec ce que vous avez mentionné est disponible dans 'Qt's site web tracker https://bugreports.qt-project.org/browse/ QTBUG-71 – IsaacS

Répondre

7

faire comme ceci:

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 
+0

Exactement ce que je cherchais. Je suis en fait très proche, j'ai utilisé la spécification de temps Qt :: LocalTime et je m'attendais à ce qu'il soit converti. – orangejulius

1

essayez d'utiliser la fonction setTime_t.

+0

Voici la version Qt4; http://doc.trolltech.com/4.5/qdatetime.html#setTime_t Upmodding parent pour la bonne réponse btw! – ismail

+0

Désolé, j'ai fait une recherche google et c'est celle que j'ai trouvée. N'a pas vérifié la version. Fixé dans edit – Marius

Questions connexes