VALIDAR FECHA Y HORA
Amigos, alguien tiene un pequeño codigo para validar la fecha y hora ingresada? en una estructura? Realmente la necesito. Si no es así tambien comprendo, si alguien me puede orientar, ya que ando muy perdida, ya hice el pequeño programa para mostrar la fecha y pide los datos: dia - mes- año, pero me falta VALIDARLOS, que cuando ingrese dia no sea <1 o mayor a 30 pero tengo complicaciones tambien con FEBRERO YA QUE TIENE SOLO 28 DIAS. Ya no alcanzo a validar si es año bisiesto o no.
Gracias a quien pueda ayudarme, ya que solo me sirve hasta hoy.
GRACIAS A TODOS.......
Gracias a quien pueda ayudarme, ya que solo me sirve hasta hoy.
GRACIAS A TODOS.......
Buenas ,buscando en mi pc encontre una vieja version de turboC ,ya puedo compilar tu programa.
No esta refinado ,solo lo hice para ver si funcionaba te pongo aqui el codigo ,lo de validar el mes es muy sencillo solo he validado esto ,supongo que el resto te sera facil hacerlo ,para mas dudas consulta aqui :)
#include<dos.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct date fecha;
struct time hora;
int ValidarDia();
int meses[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int fnc_fecha();
int dia;
void fnc_hora();
int main()
{
char opcion;
do
{
clrscr();
gotoxy(35,2);
printf("RUTINA DE FECHAn");
gotoxy(25,10);
printf("1.- Fecha n");
gotoxy(25,12);
printf("2.- Hora n");
gotoxy(25,14);
printf("3.- Salirn ");
opcion=getchar();
if (opcion=='1')
{
if(fnc_fecha()==0)
{
printf("nError El mes '%d' solo admite %d dias",fecha.da_mon,meses[fecha.da_mon-1]);;
printf("n pulsar una tecla para continuar ....");
getch();
}
}
else if(opcion=='2')
fnc_hora();
}
while(opcion!='3');
return 1;
}
int fnc_fecha()
{
clrscr();
getdate(&fecha);
printf("Su fecha actual es: %d-%d-%d",fecha.da_day, fecha.da_mon,fecha.da_year);
printf("nIngrese nuevo dia: ");
scanf("%d",&dia);
printf("nIngrese nuevo mes: ");
scanf("%d",&fecha.da_mon);
printf("nIngrese nuevo año: ");
scanf("%d",&fecha.da_year);
if(ValidarDia())
fecha.da_day=dia;
else
return 0;
setdate(&fecha);
printf("nSu nueva fecha es: %d-%d-%dn",fecha.da_day, fecha.da_mon,fecha.da_year);
system("pause");
return 1;
}
void fnc_hora()
{
clrscr();
gettime(&hora);
printf("Su hora actual es: %d:%d:%d",hora.ti_hour, hora.ti_min,hora.ti_sec);
printf("nIngrese nuevos segundos: ");
scanf(" %d",hora.ti_sec);
printf("nIngrese nuevos minutos: ");
scanf("%d",&hora.ti_min);
printf("nIngrese nueva hora: ");
scanf("%d",&hora.ti_hour);
settime(&hora);
printf("nSu nueva hora es: %d:%d:%dn",hora.ti_hour,hora.ti_min,hora.ti_sec);
system("pause");
}
int ValidarDia()
{
if(dia<=meses[fecha.da_mon-1])
return 1;
else
return 0;
}
No esta refinado ,solo lo hice para ver si funcionaba te pongo aqui el codigo ,lo de validar el mes es muy sencillo solo he validado esto ,supongo que el resto te sera facil hacerlo ,para mas dudas consulta aqui :)
#include<dos.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct date fecha;
struct time hora;
int ValidarDia();
int meses[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int fnc_fecha();
int dia;
void fnc_hora();
int main()
{
char opcion;
do
{
clrscr();
gotoxy(35,2);
printf("RUTINA DE FECHAn");
gotoxy(25,10);
printf("1.- Fecha n");
gotoxy(25,12);
printf("2.- Hora n");
gotoxy(25,14);
printf("3.- Salirn ");
opcion=getchar();
if (opcion=='1')
{
if(fnc_fecha()==0)
{
printf("nError El mes '%d' solo admite %d dias",fecha.da_mon,meses[fecha.da_mon-1]);;
printf("n pulsar una tecla para continuar ....");
getch();
}
}
else if(opcion=='2')
fnc_hora();
}
while(opcion!='3');
return 1;
}
int fnc_fecha()
{
clrscr();
getdate(&fecha);
printf("Su fecha actual es: %d-%d-%d",fecha.da_day, fecha.da_mon,fecha.da_year);
printf("nIngrese nuevo dia: ");
scanf("%d",&dia);
printf("nIngrese nuevo mes: ");
scanf("%d",&fecha.da_mon);
printf("nIngrese nuevo año: ");
scanf("%d",&fecha.da_year);
if(ValidarDia())
fecha.da_day=dia;
else
return 0;
setdate(&fecha);
printf("nSu nueva fecha es: %d-%d-%dn",fecha.da_day, fecha.da_mon,fecha.da_year);
system("pause");
return 1;
}
void fnc_hora()
{
clrscr();
gettime(&hora);
printf("Su hora actual es: %d:%d:%d",hora.ti_hour, hora.ti_min,hora.ti_sec);
printf("nIngrese nuevos segundos: ");
scanf(" %d",hora.ti_sec);
printf("nIngrese nuevos minutos: ");
scanf("%d",&hora.ti_min);
printf("nIngrese nueva hora: ");
scanf("%d",&hora.ti_hour);
settime(&hora);
printf("nSu nueva hora es: %d:%d:%dn",hora.ti_hour,hora.ti_min,hora.ti_sec);
system("pause");
}
int ValidarDia()
{
if(dia<=meses[fecha.da_mon-1])
return 1;
else
return 0;
}
Un consejo ,si lo que quieres es validar todo ,usa vbles auxiliares y cuando se cumpla todo solo entonces haces que las vbles de la estructura tome esos valores por ej:
unsigned int ihora,imin,iseg;
printf("nIngrese nueva hora: ");
scanf(" %u",ihora);
printf("nIngrese nuevos minutos: ");
scanf("%u",&imin);
printf("nIngrese nuevos segundos: ");
scanf("%u",&iseg);
if(ValidarHora(ihora,imin,iseg))
Escribimos los valores en la estructura
else
damos msg erroneo de formato de hora
int ValidarHora(unsigned int h,unsigned int m,unsigned int s){
if((h<=23)&&(m<=60)&&(s<=60)
return 1;
else
return 0;
}
Espero que este ejemplo te lo aclare mejor ,un saludo.
unsigned int ihora,imin,iseg;
printf("nIngrese nueva hora: ");
scanf(" %u",ihora);
printf("nIngrese nuevos minutos: ");
scanf("%u",&imin);
printf("nIngrese nuevos segundos: ");
scanf("%u",&iseg);
if(ValidarHora(ihora,imin,iseg))
Escribimos los valores en la estructura
else
damos msg erroneo de formato de hora
int ValidarHora(unsigned int h,unsigned int m,unsigned int s){
if((h<=23)&&(m<=60)&&(s<=60)
return 1;
else
return 0;
}
Espero que este ejemplo te lo aclare mejor ,un saludo.
