QDateTime::fromString gibt ungültiges Datum zurück, was übersehe ich?

QDateTime::fromString gibt ungültiges Datum zurück, was übersehe ich?


Ich habe einen Code, der eine Datumszeit aus einer SQLite-Datenbank liest, die Datumszeit wird als Zeichenfolge zurückgegeben. Wenn ich versuche, es mit QDateTime::FromString in ein Datum zu konvertieren, gibt es ein ungültiges Datum zurück. Unten ist die Zeit, wie sie von der Datenbank und der Konvertierung zurückgegeben wird.
Warum kann das nicht geparst werden?


// -this is the value returned from the DB currentServerTime=2012-01-17 19:20:27.0
QString format("yyyy/MM/dd hh:mm:ss");
QString qCurrentServerTime(currentServerTime);
now = QDateTime::fromString(qCurrentServerTime, format);

Antworten:


Kein QT-Experte, aber wenn QDateTime::fromString() funktioniert so, wie man es (vernünftigerweise) erwarten würde, und dementsprechend verwenden Sie nicht das richtige Muster.


Sie geben an, dass die aus der sqllite-Datenbank gelesene Zeichenfolge wie „2012-01-17 19:20:27.0“ lautet, dann sollte Ihr Format wie yyyy-MM-dd HH:mm:ss.z sein .


Im Einzelnen:



  • Ihr Trennzeichen sollte '-' und nicht '/' sein (wie Sie im Beispiel zeigen)

  • Die Zeit scheint im 24-Stunden-Format zu sein (19 -> 19 Uhr) (verwenden Sie also HH statt hh )

  • Sie haben eine Ziffer für Millisekunden, also fügen Sie .z hinzu .


Einige Code-Antworten


d   the day as number without a leading zero (1 to 31) dd  the day as number with a leading zero (01 to 31) 
QLocale("en_US").toDate(QString(__DATE__).simplified(), "MMM d yyyy");