Data e hora 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 <ctime> em seu programa C ++.
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 número inteiro.
O tipo de estrutura tm conté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ão | Função e objetivo |
---|---|
1 | time_t time(time_t *time); Isso retorna a hora do calendário atual do sistema em segundos decorridos desde 1 de janeiro de 1970. Se o sistema não tiver hora, .1 será retornado. |
2 | char *ctime(const time_t *time); Isso retorna um ponteiro para uma string na forma 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 se aproxima da quantidade de tempo que o programa de chamada está em execução. Um valor de .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 pelo tempo convertido 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 a hora na forma de uma estrutura tm. A hora é representada no Tempo Universal Coordenado (UTC), que é essencialmente o Horário 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 tempo. |
8 | double difftime ( time_t time2, time_t time1 ); Esta função calcula a diferença em segundos entre o tempo1 e o tempo2. |
9 | size_t strftime(); Esta função pode ser usada para formatar a data e a 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 conseguir o mesmo -
#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 tmA estrutura é muito importante ao trabalhar com data e hora em C ou C ++. Essa estrutura conté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 supondo que você tem um conhecimento básico sobre a estrutura C e como acessar os membros da estrutura usando o operador seta ->.
#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