Programación General => C/C++ => Mensaje iniciado por: claudi_1977 en Sábado 10 de Julio de 2004, 01:46
Título: Validar Fecha Y Hora
Publicado por: claudi_1977 en Sábado 10 de Julio de 2004, 01:46
:hola: Amigos, necesito validar la fecha y la hora de un pequeño programa en C. Lo que pasa es que tengo que recatar la fecha del sistema, SIN OCUPAR EL COMANDO SYSTEM, y luego cuando el usuario vaya ingresando el dia el mes y el año que me despliegue un mensaje que diga fecha incorrecta o algo, eso lo se hacerk pero mi duda es como valido los meses que tienen 30 31 o 28 dias? LES JURO QUE ESTOY SUPER PERDIDA. :unsure: Tengo que hacer lo mismo con la hora. Miren aca pego el codigo, APARTE ME SALE UN ERROR MUY GRAVE QUE NO SE DE QUE SE TRATA, POR FAVOR SI LO PUEDEN VER Y AYUDARME LES ESTARE ETERNAMENTE AGRADECIDA :(
#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 FECHA\n"); gotoxy(25,10); printf("1.- Fecha \n"); gotoxy(25,12); printf("2.- Hora \n"); gotoxy(25,14); printf("3.- Salir\n ");
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-%d\n",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:%d\n",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; }
Título: Re: Validar Fecha Y Hora
Publicado por: -SB- en Sábado 10 de Julio de 2004, 15:30
A ver, en cuanto lo que has dicho de los meses, puedes hacer algo asi, define un array en el que cada elemento sea un mes, por ejemplo:
Si quieres saber los dias de enero por ejemplo deberas poner V[1], si quieres los de agosto V[8], y asi con todos los meses..
Espero que te haya servido de algo.
Un saludo!
Pd: Cuando pastees un codigo ayudaria que quites las cosas menos relevantes y lo hagas con el tag CODE para facilitar su lectura, yo los que estan asi ni los miro..
Título: Re: Validar Fecha Y Hora
Publicado por: Noel Solw en Sábado 17 de Julio de 2004, 11:00
A continuacion adjunto una funcion para validar una fecha :
const int days[2][13] = {{365,31,28,31,30,31,30,31,31,30,31,30,31},// comunes {366,31,29,31,30,31,30,31,31,30,31,30,31}};// bisiestos
struct Date { int dd, mm, yy; }; // STRUCT DATE
int CheckDate(Date a) { if(a.yy < 1900 || a.yy > 2005) return 0; // fuera de los limites, opcional if(a.mm < 1 || a.mm > 12) return 0;// numero de mes incorrecto int k = (a.yy % 4 == 0) && (a.yy != 2000);// comun = 0,bisiesto = 1 if(a.dd < 1 || a.dd > days[k][a.mm]) return 0;// numero de dia incorrecto return 1;// la fecha es aceptada } // CHECK DATE