Data em C

Manipulando datas e horas

Existe apenas uma função para que se possa obter a data e a hora. É a função t= time('\0'); local=localtime(&t);. Esta funão devolve data e hora.

Para se obter os dados separadamente, existem os seguintes métodos:



Arquivo: Exemplo.c
#include <stdio.h>
#include <time.h>
#include <string.h>

int main(int argc, char **argv){
   struct tm *local;
   time_t t;
   t= time('\0');
   local=localtime(&t);
   // -------------------
   int dia=local->tm_mday;
   int mes=local->tm_mon;
   int ano=local->tm_year+1900;
   int dia_da_semana=local->tm_wday;
   // -------------------
   char semana[][30] = {"Domingo", "Segunda", "Terça","Quarta", "Quinta", "Sexta", "Sabado"};
char semana_atual[30];
   strcpy(semana_atual, semana[dia_da_semana]);
   // -------------------
   char mes2[][30] = {"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Desembro"};
   char mes_atual[30];
   strcpy(mes_atual, mes2[mes]);
   // -------------------
   printf("%s, %d de %s de %d\n",semana_atual,dia,mes_atual,ano); // Retorna a data
   // -------------------
   int horas=local->tm_hour;
   int minutos=local->tm_min;
   int segundos=local->tm_sec;
   printf("São: %d horas, %d minutos, %d segundos.\n",horas,minutos,segundos); // Retorna a hora
   return 0;
}

exemplo 4: alterando a data

Arquivo: Exemplo.c
#include <stdio.h>
#include <string.h>
#include <time.h>

int main(int argc, char **argv){

   // -------------------
   int dia=4;
   int mes=11;
   int ano=2011;
   // -------------------

   time_t rawtime;
   struct tm * timeinfo;
   time ( &rawtime );
   timeinfo = localtime ( &rawtime );
   timeinfo->tm_year = ano - 1900;
   timeinfo->tm_mon = mes - 1;
   timeinfo->tm_mday = dia;
   mktime ( timeinfo );

   // -------------------
   char semana[][30] = { "Domingo", "Segunda", "Terça","Quarta", "Quinta", "Sexta", "Sabado"};
   char semana_atual[30];
   strcpy(semana_atual, semana[timeinfo->tm_wday]);
   // -------------------
   char mes2[][30] = {"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Desembro"};
   char mes_atual[30];
   strcpy(mes_atual, mes2[mes-1]);
   // -------------------
   printf("%s, %d de %s de %d\n",semana_atual,dia,mes_atual,ano); // Retorna a data
   return 0;
}