Imprimir hora do sistema em C++
-
Use
std::chrono::system_clock
estd::ctime
para imprimir a hora do sistema em C++ -
Use
time
,localtime
estrftime
para imprimir a hora do sistema em C++
Este artigo explicará vários métodos de como imprimir a hora do sistema em C++.
Use std::chrono::system_clock
e std::ctime
para imprimir a hora do sistema em C++
std::chrono::system_clock
representa o relógio de parede de todo o sistema e fornece duas funções para converter para / do tipo std::time_t
. Podemos processar o último objeto usando a função ctime
e retornar uma string terminada em nulo na forma - Wed Jun 30 21:49:08 1993\n
. Neste caso, construímos uma função separada para encapsular ambas as chamadas e retornar o valor string
para o chamador. Observe que também removemos o caractere de nova linha para retornar o valor de uma forma mais flexível. Além disso, system_clock::now
é usado para recuperar o ponto de tempo atual.
#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;
}
Resultado:
Current time: Fri Apr 1 01:34:20 2021
Também se pode utilizar o mesmo método para exibir o valor da época em uma forma semelhante, conforme demonstrado no exemplo a seguir. Observe que Epoch é geralmente 1º de janeiro de 1970 para sistemas POSIX/UNIX, mas não é necessário que seja o mesmo valor para diferentes relógios fornecidos na biblioteca 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;
}
Resultado:
Epoch: Thu Jan 1 00:00:00 1970
Use time
, localtime
e strftime
para imprimir a hora do sistema em C++
Alternativamente, podemos usar a função específica POSIX - time
e recuperar diretamente a estrutura time_t
. time_t
é essencialmente um número inteiro que armazena o número de segundos desde a época. Similarmente ao método anterior, podemos usar ctime
para converter para a string de forma predefinida ou chamar a função localtime
. A função localtime
converte o objeto time_t
na estrutura tm
, que é o formato de hora dividido que pode ser utilizado para formatar a string de saída como desejarmos com especificadores especiais. A formatação é feita pela função strftime
que leva quatro parâmetros, o último dos quais é o ponteiro para struct tm
. O primeiro argumento especifica o endereço da memória onde a string de caracteres será armazenada e os próximos dois argumentos são o tamanho máximo da string e o especificador de formato. A visão geral detalhada da especificação do formato pode ser vista nesta página.
#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;
}
Resultado:
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