GNU/Linux >> Tutoriels Linux >  >> Linux

Obtenir des secondes depuis l'époque sous Linux

En C.

time(NULL);

En C++.

std::time(0);

Et la valeur de retour de time est :time_t pas longtemps


La fonction Linux native pour obtenir l'heure est gettimeofday() [il y a aussi d'autres saveurs], mais cela vous donne le temps en secondes et en nanosecondes, ce qui est plus que ce dont vous avez besoin, donc je vous suggère de continuer à utiliser time() . [Bien sûr, time() est implémenté en appelant gettimeofday() quelque part sur la ligne - mais je ne vois pas l'avantage d'avoir deux morceaux de code différents qui font exactement la même chose - et si vous le vouliez, vous utiliseriez GetSystemTime() ou quelque chose comme ça sous Windows [pas sûr que ce soit le bon nom, ça fait un moment que je n'ai pas programmé sous Windows]


Vous l'utilisez déjà :std::time(0) (n'oubliez pas de #include <ctime> ). Cependant, si std::time renvoie en fait le temps depuis que l'époque n'est pas spécifiée dans le standard (C11, référencé par le standard C++) :

7.27.2.4 Le time fonction

Synopsis

#include <time.h>
time_t time(time_t *timer);

Description

La fonction de l'heure détermine l'heure actuelle du calendrier. L'encodage de la valeur n'est pas spécifié. [c'est moi qui souligne]

Pour C++, C++11 et versions ultérieures, fournissez time_since_epoch . Cependant, avant C++20, l'époque de std::chrono::system_clock n'était pas spécifié et donc peut-être non portable dans les normes précédentes.

Pourtant, sous Linux, le std::chrono::system_clock utilisera généralement Unix Time même en C++11, C++14 et C++17, vous pouvez donc utiliser le code suivant :

#include <chrono>

// make the decltype slightly easier to the eye
using seconds_t = std::chrono::seconds;

// return the same type as seconds.count() below does.
// note: C++14 makes this a lot easier.
decltype(seconds_t().count()) get_seconds_since_epoch()
{
    // get the current time
    const auto now     = std::chrono::system_clock::now();

    // transform the time into a duration since the epoch
    const auto epoch   = now.time_since_epoch();

    // cast the duration into seconds
    const auto seconds = std::chrono::duration_cast<std::chrono::seconds>(epoch);
    
    // return the number of seconds
    return seconds.count();
}

Linux
  1. Obtenir l'âge du fichier donné ?

  2. Linux - Pourquoi les utilitaires Linux n'utilisent-ils pas un appel système pour obtenir l'heure actuelle ?

  3. Linux - Comment obtenir l'heure de l'horloge murale d'un processus en cours d'exécution ?

  4. Comment obtenir l'heure de début d'un processus Linux de longue durée ?

  5. Comment obtenir l'heure UTC

Comment tester la vitesse de chargement du site Web dans le terminal Linux

Commande de temps Linux

Obtenir des informations sur le processeur sous Linux

Dernière commande sous Linux

Vérifier le fuseau horaire sous Linux

Comment obtenir votre adresse IP sous Linux