2010-02-15 26 views
10

J'ai une entrée contenant l'heure UTC formatée selon iso8601. Je tente de l'analyser en utilisant QDateTime:Comment forcer QDateTime :: fromString à lire l'heure UTC

const char* s = "2009-11-05T03:54:00"; 
    d.setTimeSpec(Qt::UTC); 
    d = QDateTime::fromString(s, Qt::ISODate); 
    Qt::TimeSpec ts = d.timeSpec(); 

Lorsque ce fragment se termine, ts est mis à localTime et d contient 3 heures 54 minutes. Est-ce que quelqu'un sait comment lire correctement la date?

Répondre

11

Qu'en est-il de régler la spécification de temps après la méthode fromString.

const char* s = "2009-11-05T03:54:00"; 
d = QDateTime::fromString(s, Qt::ISODate); 
d.setTimeSpec(Qt::UTC); 
Qt::TimeSpec ts = d.timeSpec(); 
+0

Merci. Je ne peux pas envelopper ma tête mais ça marche! – danatel

+0

Lorsque vous déclarez 'd' pour la première fois le constructeur par défaut est utilisé, lorsque vous écrivez' d = QDateTime :: fromString (s, Qt :: ISODate); 'la valeur actuelle de' d' est remplacée par la valeur de retour de 'fromString '. Donc, si vous définissez la spécification de temps avant d'appeler 'fromString', la spécification de temps est définie pour la valeur construite par défaut. – gregseth