Konvertieren Sie eine QDateTime in UTC auf lokale system-Zeit
Baue ich eine QDateTime aus einer Zeichenfolge wie diese:
QDateTime date = QDateTime::fromString("2010-10-25T10:28:58.570Z", "yyyy-MM-ddTHH:mm:ss.zzzZ");
Ich weiß, dass date
in UTC-denn das ist die Art, wie es gespeichert ist. Aber wenn ich will, um dieses Datum für den Benutzer, sollte der Benutzer die lokale Zeitzone. Datum.toLocalTime()
sieht vielversprechend aus, aber es gibt das exakt gleiche Datum!
Wie kann ich umwandeln date
auf der lokalen Zeit, die Anzeige für den Benutzer?
Hier sind einige weitere Ausfälle:
#include <QtCore/QCoreApplication>
#include <QtCore/QDateTime>
#include <QtCore/QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QDateTime date = QDateTime::fromString("2010-10-25T10:28:58.570Z", "yyyy-MM-ddTHH:mm:ss.zzzZ");
QDateTime local = date.toLocalTime();
qDebug() << "utc: " << date;
qDebug() << "local: " << local.toString();
qDebug() << "hax: " << local.toString(Qt::SystemLocaleLongDate);
return a.exec();
}
Ausgabe:
utc: QDateTime("Mon Oct 25 10:28:58 2010")
local: "Mon Oct 25 10:28:58 2010"
hax: "Monday, October 25, 2010 10:28:58 AM"
InformationsquelleAutor andrewrk | 2010-10-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
QDateTime weiß, ob UTC oder die lokale Zeit. Zum Beispiel:
Müssen wir sagen
date
dass es ein UTC-Datum und Zeit mitdate.setTimeSpec(Qt::UTC)
:Ausgabe:
Ich bin in GMT-7, so ist dies richtig.
InformationsquelleAutor andrewrk
Ist mit QDateTime::toString() nicht geben Sie die erwarteten Ergebnisse ?
Vielleicht könnten Sie versuchen, mit einem anderen format mit
QDateTime::toString(Qt::SystemLocaleLongDate)
oderQDateTime::toString(Qt::SystemLocaleShortDate)
.Ansonsten würde ich versuchen,QLocale::dateTimeFormat(), um die lokalen format als
QString
und verwenden Sie dann diesen string als parameter format von QDateTime::toString(), aber ich glaube nicht, es wird nichts ändern.InformationsquelleAutor Jérôme