Kennt jemand eine sauberere Möglichkeit, die Zeitzone in die ISO-Zeichenfolgendarstellung einer QDateTime aufgenommen zu bekommen?Qt ISODate formatiert Datum/Uhrzeit einschließlich Zeitzone
ich soll in der Lage sein, nur die folgenden verwenden:
qDebug() << QDateTime::currentDateTime().toString(Qt::ISODate);
aber das kommt immer heraus im UTC-Format:
2014-02-24T01:29:00Z
Derzeit ist die Art, wie ich bin rund um diese Arbeit zu zwingen Die TimeSpec soll Qt :: offsetFromUtc sein, indem ich explizit den Offset festlege, den ich ursprünglich von QDateTime bekomme.
QDateTime now = QDateTime::currentDateTime();
int offset = now.offsetFromUtc();
now.setOffsetFromUtc(offset);
qDebug() << now.toString(Qt::ISODate);
Dies gibt, was ursprünglich erwartet wurde:
2014-02-24T01:29:00+02:00
Wer weiß, wie dies in einer sauberen Art und Weise zu tun, oder dies als Fehler protokolliert werden müssen?
EDIT: Ich bin mit Qt5.2.1
UPDATE:
Das folgende kleine Programm zeigt, was ich meine:
#include <QtCore/QDateTime>
#include <QtCore/QDebug>
int main(int argc, int argv){
qDebug() << QDateTime::currentDateTime().toString(Qt::ISODate);
qDebug() << QDateTime::currentDateTime().toTimeSpec(Qt::OffsetFromUTC).toString(Qt::ISODate);
QDateTime now = QDateTime::currentDateTime();
int offset = now.offsetFromUtc();
now.setOffsetFromUtc(offset);
qDebug() << now.toString(Qt::ISODate);
return 0;
}
Die folgende Ausgabe erzeugt:
"2014-02-24T10:20:49"
"2014-02-24T08:20:49Z"
"2014-02-24T10:20:49+02:00"
Die letzte Zeile ist die erwartete Zeile. Bitte beachten Sie, dass das zweite Mal in UTC konvertiert wurde, was nicht gewünscht ist.
Auch die Ausgabe ist auf meiner Maschine anders, so dass ich nicht einmal das genaue Problem reproduzieren kann: '" 2014-02-24T08: 51: 07 " " 2014-02- 24T08: 51: 07Z " " 2014-02-24T08: 51: 07Z "' – lpapp
Die Frage hat ihre Bedeutung nicht geändert, vielleicht hat sich Ihr Verständnis der Frage geändert. Kurz gesagt, ich fragte, ob es einen saubereren Weg gäbe, um das gewünschte Ergebnis zu erzielen, oder ob ich einen Fehler protokollieren sollte. Ich dachte, ich wäre mir da sehr klar. – RobbieE
Welche Version von Qt verwenden Sie? Ich benutze 5.2.1. Der Code, den ich dort eingegeben habe, ist Code, den ich tatsächlich kompiliert und ausgeführt habe, nicht nur in meinem Kopf gedacht. Die Ergebnisse sind tatsächliche Ergebnisse, die meine Maschine generiert hat, daher qualifiziert es sich als SSCCE. Danke Laszlo für Ihre Eingabe.Ich werde deine Antwort als richtig markieren. Obwohl die Antwort mir nicht hilft, werde ich annehmen, dass Ihr Code ist, wie Qt funktionieren sollte und ich einen Fehler mit Digia protokollieren soll. – RobbieE