10
votes

Comment faire la différence entre deux qdatétimes en millisecondes?

Je souhaite que qdateTime remplace le - opérateur et renvoyé une QTimespan représentant la différence entre deux qdatétimes (tout comme l'époque de .NET). Comme cela n'existe pas dans Qt, j'ai décidé de le mettre en œuvre.

Malheureusement, qdateTime n'a pas de msecsto -iblicité. Quel est le moyen le plus propre d'obtenir la différence entre deux qdatétimes précis au milliseconde?


0 commentaires

4 Réponses :


10
votes

J'utiliserais probablement A.DaySto (B) * 1000 * 60 * 60 * 24 + A.Time (). mscsto (B.Time ()) . Notez que vous devez regarder à quel point vous pouvez être proche, car vous allez déborder de votre type de données plutôt rapidement.


0 commentaires

3
votes

Que diriez-vous:

QDateTime a = QDateTime::currentDateTime();
QDateTime b = a.addMSecs( 1000 );
qDebug( "%d", a.time().msecsTo( b.time() ) );


1 commentaires

Mais cela ignorera complètement la partie de date.



25
votes

Je me rends compte que cette question est à partir de 2010 et que Qt 4.7 n'existait pas à l'époque (elle est effectivement sortie d'une semaine après la demande initiale - 21 septembre 2010), mais pour les personnes qui recherchent Comment faire cela maintenant:

à partir de Qt 4.7, qdateTime a une méthode "msecsto". Voir la documentation QT 4.8 à http://doc.qt.io/qt-4.8/ qdateTime.html # msecsto . xxx


3 commentaires

J'inclurais les détails du lien fourni dans le cadre de votre réponse, sinon cela est susceptible d'être fermé comme une réponse uniquement


Merci, drneel. J'ai ajouté un échantillon de code à ma réponse.


Stackoverflow - Il doit y avoir un moyen de mettre à jour la réponse acceptée car, au fil du temps, la réponse pourrait changer en raison de nouvelles versions de logiciels, de nouvelles méthodologies, etc. Cela devrait être la réponse acceptée pour maintenant jusqu'à ce que QT change quelque chose à l'avenir. J'ai eu la chance de voter celui-ci.



2
votes

Toutes les solutions sont bonnes, mais si votre horodatage est dans un format particulier, vous pouvez trouver la différence ci-dessous, et vous pouvez également affecter cela à qstring.

laisse start em> est temps Quelques instants dans certains formats p> xxx pré>

laisse fin em> est l'heure à un moment après Démarrer em> dans un format P > xxx pré>

Donc, vous pouvez trouver la différence en fournissant le format et en utilisant msecsto em> et attribuez-les à qstring (si nécessaire). P>

QString timeDiff= QString("%1").arg(QDateTime().fromString(start ,"hh:mm:ss AP dd/MM/yyyy").msecsTo(QDateTime().fromString(end ,"hh:mm:ss AP dd/MM/yyyy")));


0 commentaires