Imprimer l'heure du système en C++
-
Utilisez
std::chrono::system_clock
etstd::ctime
pour imprimer l’heure système en C++ -
Utilisez
time
,localtime
etstrftime
pour imprimer l’heure système en C++
Cet article explique plusieurs méthodes d’impression de l’heure système en C++.
Utilisez std::chrono::system_clock
et std::ctime
pour imprimer l’heure système en C++
std::chrono::system_clock
représente l’horloge murale du système et fournit deux fonctions pour convertir vers / depuis le type std::time_t
. Nous pouvons traiter ce dernier objet en utilisant la fonction ctime
et renvoyer une chaîne terminée par un nul de la forme -Wed Jun 30 21:49:08 1993\n
. Dans ce cas, nous construisons une fonction distincte pour encapsuler les deux appels et renvoyer la valeur string
à l’appelant. Notez que nous supprimons également le caractère de nouvelle ligne pour renvoyer la valeur sous une forme plus flexible. De plus, system_clock::now
est utilisé pour récupérer le point de temps actuel.
#include <sys/time.h>
#include <chrono>
#include <ctime>
#include <iostream>
using std::cout;
using std::endl;
using std::string;
std::string timeToString(std::chrono::system_clock::time_point &t) {
std::time_t time = std::chrono::system_clock::to_time_t(t);
std::string time_str = std::ctime(&time);
time_str.resize(time_str.size() - 1);
return time_str;
}
int main() {
auto time_p = std::chrono::system_clock::now();
cout << "Current time: " << timeToString(time_p) << endl;
return EXIT_SUCCESS;
}
Production:
Current time: Fri Apr 1 01:34:20 2021
On peut également utiliser la même méthode pour afficher la valeur Epoch sous une forme similaire, comme illustré dans l’exemple suivant. Notez que, Epoch est généralement le 1er janvier 1970 pour les systèmes POSIX/UNIX, mais il n’est pas nécessaire que ce soit la même valeur pour les différentes horloges fournies dans la bibliothèque chrono
.
#include <sys/time.h>
#include <chrono>
#include <ctime>
#include <iostream>
using std::cout;
using std::endl;
using std::string;
std::string timeToString(std::chrono::system_clock::time_point &t) {
std::time_t time = std::chrono::system_clock::to_time_t(t);
std::string time_str = std::ctime(&time);
time_str.resize(time_str.size() - 1);
return time_str;
}
int main() {
std::chrono::system_clock::time_point time_p2;
cout << "Epoch: " << timeToString(time_p2) << endl;
return EXIT_SUCCESS;
}
Production:
Epoch: Thu Jan 1 00:00:00 1970
Utilisez time
, localtime
et strftime
pour imprimer l’heure système en C++
Alternativement, nous pouvons utiliser la fonction spécifique de POSIX - time
et récupérer directement la structure time_t
. time_t
est essentiellement un entier qui stocke le nombre de secondes depuis l’Époque. De la même manière que la méthode précédente, on peut utiliser ctime
pour convertir en chaîne de forme prédéfinie ou appeler la fonction localtime
. La fonction localtime
convertit l’objet time_t
en structure tm
, qui est le format de temps décomposé qui peut être utilisé pour formater la chaîne de sortie comme nous le souhaitons avec des spécificateurs spéciaux. Le formatage se fait par la fonction strftime
qui prend quatre paramètres dont le dernier est le pointeur vers struct tm
. Le premier argument spécifie l’adresse mémoire où la chaîne de caractères sera stockée, et les deux arguments suivants sont la taille maximale de la chaîne et le spécificateur de format. L’aperçu détaillé de la spécification de format peut être vu sur cette page.
#include <sys/time.h>
#include <ctime>
#include <iostream>
using std::cout;
using std::endl;
using std::string;
int main() {
char tt[100];
time_t now = time(nullptr);
auto tm_info = localtime(&now);
strftime(tt, 100, "%Y-%m-%d %H:%M:%S", tm_info);
puts(tt);
return EXIT_SUCCESS;
}
Production:
2021-04-02 05:42:46
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook