2010-05-06 17 views
37

Ich versuche, die aktuelle Zeit als TimeStamp ohne Erfolg zu bekommen.Wie bekomme ich den aktuellen TimeStamp?

Ich habe diesen Code:

QDateTime setTime = QDateTime::fromString (QString("1970-07-18T14:15:09"), Qt::ISODate); 
QDateTime current = QDateTime::currentDateTime(); 
uint msecs = setTime.time().msecsTo(current.time()); 

return QString::number(msecs); 

Der Ausgang ist

Sunday, January 25th 1970, 03:17:35 (GMT) 
+0

Was genau meinen Sie mit Zeitstempel? Bitte geben Sie die erwartete Ausgabe an. – chalup

+1

Unix-Zeit == Zeitstempel – user63898

Antwort

34

Ich glaube, Sie suchen für diese Funktion:

http://doc.qt.io/qt-5/qdatetime.html#toTime_t

uint QDateTime :: toTime_t() const

Gibt das Datum als die Anzahl der Sekunden zurück, die seit 1970-01-01T00: 00: 00,> Koordinierte Weltzeit (Qt :: UTC) vergangen sind.

Auf Systemen, die keine Zeitzonen unterstützen, verhält sich diese Funktion so, als wäre die lokale Zeit Qt :: UTC.

Siehe auch setTime_t().

+1

ich tat das: QDateTime aktuelle = QDateTime :: currentDateTime(); uint Zeitstempel = current.toTime_t(); , aber es gab mir nicht das aktuelle Datum, nachdem ich das Ergebnis hier getestet habe: http://www.4webhelp.net/us/timestamp.php – user63898

+2

gerade versuchte Pass-String von QDateTime :: currentDateTime() zurückgegeben. toTime_t() zu diesem Website und bekam die richtige Zeit. Vielleicht haben Sie auf dieser Seite eine falsche Zeitzone im Formular eingestellt. – VestniK

+0

Ich habe auch die richtige Zeit, mit dem gleichen Code. – Jack

65

In Qt 4.7 gibt es die statische Funktion QDateTime::currentMSecsSinceEpoch(), die genau das tut, was Sie brauchen, ohne Zwischenschritte. Daher würde ich das für Projekte empfehlen, die Qt 4.7 oder neuer verwenden.

+9

Beachten Sie, dass dies das Intervall in ** Millisekunden ** und nicht in Sekunden zurückgibt. Es ist also keine Unix-Zeit! – drzymala

+2

Mach einfach (QDateTime :: currentMSecsSinceEpoch()/1000), was es Unix-Zeit machen sollte: P –

+0

Diese Antwort verursacht, dass ich Zeit verschwende! denn das ist nicht genau Unix-Zeit wie @martini erwähnt. –

Verwandte Themen