Obtenez le temps depuis l’époque en millisecondes, de préférence avec C ++ 11 chrono

Tout ce que je veux, c’est obtenir le temps écoulé depuis l’époque en millisecondes et le stocker dans une durée non signée.

J’ai trouvé cette question connexe . Mais honnêtement, cela ne peut pas être le moyen le plus simple de réaliser une tâche aussi simple, n’est-ce pas? J’espère quelque chose de beaucoup plus simple, mais je ne trouve rien dans la référence std :: chrono . Tout conseil est le bienvenu. Je n’ai pas nécessairement besoin d’utiliser std::chrono , mais je veux qu’il soit indépendant de la plate-forme.

 unsigned long milliseconds_since_epoch = std::chrono::system_clock::now().time_since_epoch() / std::chrono::milliseconds(1); 

Bien que, surtout si vous voulez l’indépendance de la plate-forme, il peut être préférable de remplacer unsigned long par un type plus susceptible d’être assez gros:

  • (unsigned) long long
  • std::(u)int64_t
  • std::chrono::milliseconds::rep
  • auto

Pour moi, cela indique clairement à la fois que vous risquez une perte de précision (par analogie avec la division entière) et que vous quittez la sécurité du système de types (en divisant par un temps typescript pour donner un nombre sans unité). Cependant, comme le démontrent les commentaires, certaines personnes diraient que toute tentative visant à s’éloigner de la sécurité du type devrait s’accompagner d’une tentative délibérée de donner un aspect dangereux au code. Si vous devez traiter avec des personnes qui partagent cette conviction, il pourrait être plus simple d’utiliser duration_cast plutôt que de vous lancer dans une discussion sur des choix stylistiques non pertinents:

 unsigned long milliseconds_since_epoch = std::chrono::duration_cast (std::chrono::system_clock::now().time_since_epoch()).count();