Data e hora do C++
A biblioteca padrão C++ não fornece um tipo de data adequado. C++ herda as estruturas e funções para manipulação de data e hora de C. Para acessar funções e estruturas relacionadas a data e hora, você precisaria incluir o arquivo de cabeçalho
Existem quatro tipos relacionados ao tempo:clock_t, time_t, size_t e tm . Os tipos - clock_t, size_t e time_t são capazes de representar a hora e a data do sistema como algum tipo de inteiro.
O tipo de estrutura tm mantém a data e hora na forma de uma estrutura C com os seguintes elementos -
struct tm { int tm_sec; // seconds of minutes from 0 to 61 int tm_min; // minutes of hour from 0 to 59 int tm_hour; // hours of day from 0 to 24 int tm_mday; // day of month from 1 to 31 int tm_mon; // month of year from 0 to 11 int tm_year; // year since 1900 int tm_wday; // days since sunday int tm_yday; // days since January 1st int tm_isdst; // hours of daylight savings time }
A seguir estão as funções importantes, que usamos ao trabalhar com data e hora em C ou C++. Todas essas funções fazem parte da biblioteca padrão C e C++ e você pode verificar seus detalhes usando a referência à biblioteca padrão C++ fornecida abaixo.
Sr.Nº | Função e Propósito |
---|---|
1 | time_t time(time_t *time); Isso retorna a hora atual do calendário do sistema em número de segundos decorridos desde 1º de janeiro de 1970. Se o sistema não tiver hora, será retornado .1. |
2 | char *ctime(const time_t *time); Isso retorna um ponteiro para uma string no formato dia mês ano horas:minutos:segundos ano\n\0 . |
3 | struct tm *localtime(const time_t *time); Isso retorna um ponteiro para o tm estrutura que representa a hora local. |
4 | clock_t clock(void); Isso retorna um valor que aproxima a quantidade de tempo que o programa de chamada está em execução. Um valor de 0,1 é retornado se o tempo não estiver disponível. |
5 | char * asctime ( const struct tm * time ); Isso retorna um ponteiro para uma string que contém as informações armazenadas na estrutura apontada por hora convertida na forma:dia mês data horas:minutos:segundos ano\n\0 |
6 | struct tm *gmtime(const time_t *time); Isso retorna um ponteiro para o tempo na forma de uma estrutura tm. A hora é representada no Tempo Universal Coordenado (UTC), que é essencialmente o Tempo Médio de Greenwich (GMT). |
7 | time_t mktime(struct tm *time); Isso retorna o tempo de calendário equivalente ao tempo encontrado na estrutura apontada por time. |
8 | duplo difftime ( time_t time2, time_t time1); Esta função calcula a diferença em segundos entre time1 e time2. |
9 | size_t strftime(); Esta função pode ser usada para formatar data e hora em um formato específico. |
Data e hora atuais
Suponha que você queira recuperar a data e hora atuais do sistema, seja como hora local ou como Hora Universal Coordenada (UTC). A seguir está o exemplo para alcançar o mesmo -
Demonstração ao vivo
#include <iostream> #include <ctime> using namespace std; int main() { // current date/time based on current system time_t now = time(0); // convert now to string form char* dt = ctime(&now); cout << "The local date and time is: " << dt << endl; // convert now to tm struct for UTC tm *gmtm = gmtime(&now); dt = asctime(gmtm); cout << "The UTC date and time is:"<< dt << endl; }
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
The local date and time is: Sat Jan 8 20:07:41 2011 The UTC date and time is:Sun Jan 9 03:07:41 2011
Formatar hora usando struct tm
O tm estrutura é muito importante ao trabalhar com data e hora em C ou C++. Essa estrutura mantém a data e a hora na forma de uma estrutura C, conforme mencionado acima. Na maioria das vezes, as funções relacionadas fazem uso da estrutura tm. A seguir está um exemplo que faz uso de várias funções relacionadas a data e hora e estrutura tm −
Ao usar a estrutura neste capítulo, estou assumindo que você tem conhecimento básico sobre a estrutura C e como acessar os membros da estrutura usando o operador seta ->.
Demonstração ao vivo
#include <iostream> #include <ctime> using namespace std; int main() { // current date/time based on current system time_t now = time(0); cout << "Number of sec since January 1,1970 is:: " << now << endl; tm *ltm = localtime(&now); // print various components of tm structure. cout << "Year:" << 1900 + ltm->tm_year<<endl; cout << "Month: "<< 1 + ltm->tm_mon<< endl; cout << "Day: "<< ltm->tm_mday << endl; cout << "Time: "<< 5+ltm->tm_hour << ":"; cout << 30+ltm->tm_min << ":"; cout << ltm->tm_sec << endl; }
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
Number of sec since January 1,1970 is:: 1588485717 Year:2020 Month: 5 Day: 3 Time: 11:31:57
Linguagem C
- Cálculos de tensão e corrente
- Variáveis, literais e constantes de C++
- Classes e objetos C++
- Gerenciamento de memória C++:novo e excluir
- Herança pública, protegida e privada C++
- Função de amigo C++ e classes de amigo
- Como obter data e hora atuais em Python?
- Estruturas e classes em C ++
- Sobrecarga de C++ (operador e função)
- Arquivos e fluxos C++