web-dev-qa-db-fra.com

Comment obtenir le TimeStamp actuel?

J'essaie d'obtenir l'heure actuelle en tant que TimeStamp sans succès.

J'ai ce 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);

La sortie est

Sunday, January 25th 1970, 03:17:35 (GMT)
42
user63898

Je pense que vous recherchez cette fonction:

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

uint QDateTime :: toTime_t () const

Renvoie le datetime comme le nombre de secondes qui se sont écoulées depuis 1970-01-01T00: 00: 00,> Temps universel coordonné (Qt :: UTC).

Sur les systèmes qui ne prennent pas en charge les fuseaux horaires, cette fonction se comportera comme si l'heure locale était Qt :: UTC.

Voir aussi setTime_t ().

35
VestniK

Dans Qt 4.7, il y a la fonction statique QDateTime::currentMSecsSinceEpoch() , qui fait exactement ce dont vous avez besoin, sans aucune étape intermédiaire. Par conséquent, je recommanderais cela pour les projets utilisant Qt 4.7 ou plus récent.

76
Wim Leers

Depuis Qt 5.8, nous avons maintenant QDateTime::currentSecsSinceEpoch() pour délivrer les secondes directement, a.k.a. comme un véritable horodatage Unix. Donc, pas besoin de diviser le résultat par 1000 pour obtenir plus de secondes.

Crédits: également publié sous forme de commentaire à cette réponse . Cependant, je pense qu'il est plus facile de trouver s'il s'agit d'une réponse distincte.

3
Adrian W