Foros del Web » Programando para Internet » Javascript »

problema de fechas

Estas en el tema de problema de fechas en el foro de Javascript en Foros del Web. Necesito su ayuda!!! tengo un problemilla necesito poner en un formulario dos campos con fecha inicial y fecha final, al momento de cargar la página ...
  #1 (permalink)  
Antiguo 15/02/2002, 23:06
 
Fecha de Ingreso: febrero-2002
Mensajes: 15
Antigüedad: 22 años, 2 meses
Puntos: 0
problema de fechas

Necesito su ayuda!!! tengo un problemilla necesito poner en un formulario dos campos con fecha inicial y fecha final, al momento de cargar la página debo poner en el campo fecha inicial la fecha del sistema en formato dd/mm/aaaa despues el usuario podrá capturar la fecha de fin.. donde debo validar que las fechas sean correctas y que la fecha final no sea menor a la fecha inicial, la fecha inicial no debe ser mayor a la del sistema...
  #2 (permalink)  
Antiguo 16/02/2002, 20:59
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Re: problema de fechas

¿Vas a capturar ambas fechas o solo la fecha final?
  #3 (permalink)  
Antiguo 18/02/2002, 10:43
 
Fecha de Ingreso: febrero-2002
Mensajes: 15
Antigüedad: 22 años, 2 meses
Puntos: 0
Re: problema de fechas

si debo capturar solo la fecha final... ya que la fecha inicial la voy a jalar del sistema y le voy ap oner un disable
  #4 (permalink)  
Antiguo 19/02/2002, 01:59
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Re: problema de fechas

Bueno, prepárate que lo que viene es largo.

El siguiente código te va a validar completamente la captura de tu fecha y adicionalmente va a hacer el chequeo de que tu fecha final sea mayor o igual que la inicial.

Espero que te sirva.

<html>
<head>
<script language="JavaScript">

function esDigito(sChr){
var sCod = sChr.charCodeAt(0);
return ((sCod > 47) && (sCod < 58));
}

function valSep(oTxt){
var bOk = false;
bOk = bOk || ((oTxt.value.charAt(2) == "-") && (oTxt.value.charAt(5) == "-"));
bOk = bOk || ((oTxt.value.charAt(2) == "/") && (oTxt.value.charAt(5) == "/"));
return bOk;
}

function finMes(oTxt){
var nMes = parseInt(oTxt.value.substr(3, 2), 10);
var nRes = 0;
switch (nMes){
case 1: nRes = 31; break;
case 2: nRes = 29; break;
case 3: nRes = 31; break;
case 4: nRes = 30; break;
case 5: nRes = 31; break;
case 6: nRes = 30; break;
case 7: nRes = 31; break;
case 8: nRes = 31; break;
case 9: nRes = 30; break;
case 10: nRes = 31; break;
case 11: nRes = 30; break;
case 12: nRes = 31; break;
}
return nRes;
}

function valDia(oTxt){
var bOk = false;
var nDia = parseInt(oTxt.value.substr(0, 2), 10);
bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt)));
return bOk;
}

function valMes(oTxt){
var bOk = false;
var nMes = parseInt(oTxt.value.substr(3, 2), 10);
bOk = bOk || ((nMes >= 1) && (nMes <= 12));
return bOk;
}

function valAno(oTxt){
var bOk = true;
var nAno = oTxt.value.substr(6);
bOk = bOk && ((nAno.length == 2) || (nAno.length == 4));
if (bOk){
for (var i = 0; i < nAno.length; i++){
bOk = bOk && esDigito(nAno.charAt(i));
}
}
return bOk;
}

Sigue...
  #5 (permalink)  
Antiguo 19/02/2002, 02:01
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Re: problema de fechas

...continuación

function valFecha(oTxt){
var bOk = true;
if (oTxt.value != ""){
bOk = bOk && (valAno(oTxt));
bOk = bOk && (valMes(oTxt));
bOk = bOk && (valDia(oTxt));
bOk = bOk && (valSep(oTxt));
return bOk;
}
}

function fechaMayorOIgualQue(fec0, fec1){
var bRes = false;
var sDia0 = fec0.value.substr(0, 2);
var sMes0 = fec0.value.substr(3, 2);
var sAno0 = fec0.value.substr(6, 4);
var sDia1 = fec1.value.substr(0, 2);
var sMes1 = fec1.value.substr(3, 2);
var sAno1 = fec1.value.substr(6, 4);
if (sAno0 > sAno1) bRes = true;
else {
if (sAno0 == sAno1){
if (sMes0 > sMes1) bRes = true;
else {
if (sMes0 == sMes1)
if (sDia0 >= sDia1) bRes = true;
}
}
}
return bRes;
}

function valFechas(){
var bOk = false;
if (valFecha(document.f1.fec1)){
if (fechaMayorOIgualQue(document.f1.fec1, document.f1.fec0))
bOk = true;
}
if (!bOk){
alert("Fecha inválida");
document.f1.fec1.focus();
}
}

function padNmb(nStr, nLen){
var sRes = String(nStr);
var sCeros = "0000000000";
return sCeros.substr(0, nLen - sRes.length) + sRes;
}

function cargaFec0(){
var fecAct = new Date();
var sAno = fecAct.getFullYear();
var sMes = fecAct.getMonth() + 1;
var sDia = fecAct.getDate();
document.f1.fec0.value= padNmb(sDia, 2) + "/" + padNmb(sMes, 2) + "/" + padNmb(sAno, 4);
}

</script>
</head>

Sigue...
  #6 (permalink)  
Antiguo 19/02/2002, 02:02
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Re: problema de fechas

<body>
<form name="f1">
<table>
<tr>
<td align="right">
Fecha inicial (dd/mm/aaaa):
</td>
<td>
<input type="text" size="10" name="fec0" disabled>
</td>
</tr>
<tr>
<td align="right">
Fecha final (dd/mm/aaaa):
</td>
<td>
<input type="text" size="10" name="fec1">
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="button" name="val" value="Validar" onclick="valFechas()">
</td>
</tr>
</table>
<script language="JavaScript">
cargaFec0();
</script>
</form>
</body>
</html>

¡Mas vale que te sirva!

Saludos.
  #7 (permalink)  
Antiguo 20/02/2002, 16:44
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Re: problema de fechas

mde2523, después de pasar un buen rato programando y haciendo pruebas para resolver TU problema, lo menos que esperaría es que me escribas al menos un:

...lo leí!
  #8 (permalink)  
Antiguo 21/02/2002, 18:15
 
Fecha de Ingreso: febrero-2002
Mensajes: 15
Antigüedad: 22 años, 2 meses
Puntos: 0
Re: problema de fechas

Claro que si lo leí de hecho estuve esperando respuestas y nada... de verdad te agradezco mucho que te hayas tomado la molestia de ayudarme... mil mil gracias,.... sabes que es lo mejor... que me sirvio de mucho tu ayuda...de hecho ya lo implemente y esta super bien...

Gracias!!!!

Marlene
  #9 (permalink)  
Antiguo 21/02/2002, 23:45
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Re: problema de fechas

Que bueno Marlene, me sentí muy frustrado de pensar que habias olvidado el post y que había perdido el tiempo.

Suerte.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:02.