2010-02-15 18 views
10

Tengo una entrada que contiene la hora UTC formateada de acuerdo con iso8601. Trato de analizar usando QDateTime:Cómo forzar a QDateTime :: fromString a leer la hora UTC

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

Cuando termina este fragmento, ts se fija a la hora local y d contiene de 3 horas 54 minutos. ¿Alguien sabe cómo leer la fecha correctamente?

Respuesta

11

¿Qué hay de la configuración de la especificación de tiempo después de el método 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

Gracias. No puedo entender esto, ¡pero funciona! – danatel

+0

Cuando declara 'd' se utiliza el constructor predeterminado, cuando escribe' d = QDateTime :: fromString (s, Qt :: ISODate); 'el valor actual de' d' se reemplaza por el valor devuelto de 'fromString '. Entonces, si configura la especificación de tiempo antes de llamar a 'fromString', la especificación de tiempo se define para el valor predeterminado construido. – gregseth

Cuestiones relacionadas