script para validar fechas

carmen
04 de Noviembre del 2003
Hola!He encontrado este script para validar dos fechas recogidas de un formulario, mis conocimientos de javascript son muy básicos, agradecería si alguien pudiese explicarme exactamente como funciona este script porque no entiendo la función padout,
Gracias


<script language="JavaScript"><!--
function padout(number) { return (number < 10) ? '0' + number : number; }

function y2k(number) { return (number < 1000) ? number + 1900 : number; }

function validate(what) {
var startday = what.startday.options[what.startday.selectedIndex].value;
var startmonth = what.startmonth.options[what.startmonth.selectedIndex].value;
var startyear = what.startyear.options[what.startyear.selectedIndex].text;
var endday = what.endday.options[what.endday.selectedIndex].value;
var endmonth = what.endmonth.options[what.endmonth.selectedIndex].value;
var endyear = what.endyear.options[what.endyear.selectedIndex].text;

unvalidstartdate = startday + '/' + startmonth + '/' + startyear;
unvalidenddate = endday + '/' + endmonth + '/' + endyear;

var startdate = new Date(startyear-0,startmonth-1,startday-0);
var enddate = new Date(endyear-0,endmonth-1,endday-0);

var validstartdate = padout(startdate.getDate()) + '/' + padout(startdate.getMonth()+1) + '/' + y2k(startdate.getYear())
var validenddate = padout(enddate.getDate()) + '/' + padout(enddate.getMonth()+1) + '/' + y2k(enddate.getYear())

if (unvalidstartdate != validstartdate) {
alert('Start Date: ' + what.startday.options[what.startday.selectedIndex].text +
' ' + what.startmonth.options[what.startmonth.selectedIndex].text +
' ' + what.startyear.options[what.startyear.selectedIndex].text + ' is invalid');
return false;
}

if (unvalidenddate != validenddate) {
alert('End Date: ' + what.endday.options[what.endday.selectedIndex].text +
' ' + what.endmonth.options[what.endmonth.selectedIndex].text +
' ' + what.endyear.options[what.endyear.selectedIndex].text + ' is invalid');
return false;
}

starttime = Date.UTC(y2k(startdate.getYear()),startdate.getMonth(),startdate.getDate(),0,0,0);
endtime = Date.UTC(y2k(enddate.getYear()),enddate.getMonth(),enddate.getDate(),0,0,0);

if (starttime < endtime) {
// valid
}
else {
alert('Start Date is not less than End Date');
return false
}

currentdate = new Date();
currenttime = Date.UTC(y2k(currentdate.getYear()),currentdate.getMonth(),currentdate.getDate(),0,0,0);

if (starttime > currenttime) {
// valid
}
else {
alert('start Date is not less than todays date');
return false;
}

what.startdate.value = validstartdate;
what.enddate.value = validenddate;
return true;
}
//--></script>

scriptman
04 de Noviembre del 2003
La funcion padout le das un numero X, si éste es menor que 10, regresa "0X", si es mayor, regresa X;
ejemplo:
num = padout(5); // (aqui, num vale "05" )
num = padout(16); // (aqui, num vale "16" )

claro, tambien trabaja con variables... padout(varX)

saludos, scriptman.

Carmen
04 de Noviembre del 2003
Gracias por tu ayuda scriptman!!