#include #include // Meu novo tipo de dados para representar data e horário struct Data { int ano, mes, dia; int hora, minuto, segundo; }; struct Data agora() { struct Data now; struct tm* systemTime; time_t timestamp; // aqui le o relogio do computador, obtendo o timestamp timestamp = time(NULL); // a funcao "localtime" converte o timestamp para // um valor do tipo "struct tm", que contem a data e horario. // A variavel systemTime é do tipo "struct tm" systemTime = localtime(×tamp); // pega os valores de dia, mes, ano, hora, minuto e segundo // que estão na variável systemTime. Algums conversões precisam ser feitas: // i) em systemTime, o ano está em tm_year porém é contado a partir de 1900, // então para saber o ano real preciso somar 1900 ao valor de tm_year. // ii) o mês está em tm_mon, sendo janeiro 0 e dezembro 11; preciso então // somar 1 ao valor de tm_mon. now.dia = systemTime->tm_mday; now.mes = systemTime->tm_mon + 1; now.ano = systemTime->tm_year + 1900; now.hora = systemTime->tm_hour; now.minuto = systemTime->tm_min; now.segundo = systemTime->tm_sec; // Valor de retorno da função "agora" return now; } void mostra_data(struct Data d) { printf("%02d/%02d/%04d %02d:%02d:%02d", d.dia, d.mes, d.ano, d.hora, d.minuto, d.segundo); } int main() { struct Data umaData; puts("\nEste exemplo mostra como ler o relógio do computador, e guardar"); puts("a data e horário em uma variável do tipo \"struct Data\""); puts("O problema é que o relógio do computador contém um timestamp,"); puts("que é uma contagem de segundos desde 1/1/1970 0:0:0."); puts("Felizmente existe uma função da biblioteca C padrão que faz esse"); puts("tipo de conversão.\n"); // Chama a função "agora", que lê o relógio do computador // e devolve um valor do tipo "struct Data". umaData = agora(); // Chama a função "mostra_data", que mostra na tela o horário // no formato dia/mes/ano hora:minuto:segundo mostra_data(umaData); puts(""); return 0; }