La pregunta me viene ahora, cuando no se ver que errores tengo mal aparte de que no me funcione.
Primero paso el codigo original en VBS y despues lo que tengo en JS a ver si alguien em puede ayudar.
VBS
Cita:
<script language="VBScript">
'Acepta fechas en uno de los siguientes formatos:
' dd/mm/yy, dd/mm/yyyy (donde 'dd' y 'mm' pueden ser 1 o dos cifras)
' y en lugar de '/' tambien acepta '.' y '-'.
'Comprueba los años bisiestos
Function ParseDate( ByRef sFecha )
Dim nDia, nMes, nAnyo, sDia, sMes, sAnyo, sCar
Dim nLen, idx, bRet, bFound
bRet = True
sFecha = Trim( sFecha )
nLen = Len( sFecha )
idx = 1
nDia = 0
nMes = 0
nAnyo = 0
' Busca el dia
bFound = False
While idx < nLen And Not bFound
sCar = Mid( sFecha, idx, 1 )
If sCar = "/" Or sCar = "." Or sCar = "-" Then
If IsNumeric( sDia ) Then nDia = CLng( sDia )
bFound = True
Else
sDia = sDia & sCar
End If
idx = idx + 1
Wend
If Not bFound Then
bRet = False
Else
If Len( sDia ) = 1 Then sDia = "0" & sDia
End If
' Busca el mes
bFound = False
While idx < nLen And Not bFound And bRet
sCar = Mid( sFecha, idx, 1 )
If sCar = "/" Or sCar = "." Or sCar = "-"Then
If IsNumeric( sMes ) Then nMes = CLng( sMes )
bFound = True
Else
sMes = sMes & sCar
End If
idx = idx + 1
Wend
If Not bFound Then
bRet = False
Else
If Len( sMes ) = 1 Then sMes = "0" & sMes
End If
sAnyo = Mid( sFecha, idx, nLen-idx+1 )
If IsNumeric( sAnyo ) Then nAnyo = CLng( sAnyo )
If nAnyo < 100 Then
If nAnyo > 50 Then
nAnyo = nAnyo + 1900
Else
nAnyo = nAnyo + 2000
End If
sAnyo = CStr( nAnyo )
End If
If bRet Then
If nAnyo < 1900 Or nAnyo > 2100 Or nDia < 1 Or nDia > 31 Or nMes < 1 Or nMes > 12 Then
bRet = False
Else
If (nMes = 4 Or nMes = 6 Or nMes = 9 Or nMes = 11) And nDia > 30 Then
bRet = False
Else
If (( nAnyo Mod 4 ) <> 0) And nMes = 2 And nDia > 28 Then
bRet = False
Else
If (( nAnyo Mod 100 <> 0 ) And Not ( nAnyo Mod 400 <> 0 )) And nMes = 2 And nDia > 28 Then
bRet = False
End If
End If
End If
End If
End If
If bRet Then
sFecha = sDia & "/" & sMes & "/" & sAnyo
End If
ParseDate = bRet
End Function
Function ParseTime( ByRef sHora )
Dim sH, sM, sCar, nHora, nMin, idx, bFound
bRet = True
sHora = Trim( sHora )
nLen = Len( sHora )
idx = 1
nHora = 0
nMin = 0
' Busca la hora
bFound = False
While idx <= nLen And Not bFound
sCar = Mid( sHora, idx, 1 )
If sCar = ":" Or sCar = "." Or sCar = "," Then
If IsNumeric( sH ) Then nHora = CLng( sH )
bFound = True
Else
sH = sH & sCar
End If
idx = idx + 1
Wend
If Not bFound Then
'Puede ser que entren solo la hora, con lo que el caracter no se encuentra
If IsNumeric( sH ) Then
nHora = CLng( sH )
Else
bRet = False
End If
End If
'window.alert(sH)
If bRet Then
sM = Mid( sHora, idx, nLen-idx+1 )
If IsNumeric( sM ) Then nMin = CLng( sM )
End If
'window.alert(sM)
If nHora > 23 Or nMin > 59 Then
bRet = False
End If
If bRet Then
sHora = CStr( nHora*60 + nMin )
End If
ParseTime = bRet
End Function
' -1 => sFecha1 > sFecha2
' 0 => sFecha1 = sFecha2
' 1 => sFecha1 < sFecha2
Function Date_Relation( sFecha1, sFecha2 )
Dim lFecha1, lFecha2
sFecha1 = Trim( sFecha1 )
sFecha2 = Trim( sFecha2 )
lFecha1 = CLng( Mid(sFecha1,7,4) & Mid(sFecha1,4,2) & Mid(sFecha1,1,2) )
lFecha2 = CLng( Mid(sFecha2,7,4) & Mid(sFecha2,4,2) & Mid(sFecha2,1,2) )
If lFecha1 > lFecha2 Then
Date_Relation = -1
ElseIf lFecha2 > lFecha1 Then
Date_Relation = 1
Else
Date_Relation = 0
End If
End Function
</script>
'Acepta fechas en uno de los siguientes formatos:
' dd/mm/yy, dd/mm/yyyy (donde 'dd' y 'mm' pueden ser 1 o dos cifras)
' y en lugar de '/' tambien acepta '.' y '-'.
'Comprueba los años bisiestos
Function ParseDate( ByRef sFecha )
Dim nDia, nMes, nAnyo, sDia, sMes, sAnyo, sCar
Dim nLen, idx, bRet, bFound
bRet = True
sFecha = Trim( sFecha )
nLen = Len( sFecha )
idx = 1
nDia = 0
nMes = 0
nAnyo = 0
' Busca el dia
bFound = False
While idx < nLen And Not bFound
sCar = Mid( sFecha, idx, 1 )
If sCar = "/" Or sCar = "." Or sCar = "-" Then
If IsNumeric( sDia ) Then nDia = CLng( sDia )
bFound = True
Else
sDia = sDia & sCar
End If
idx = idx + 1
Wend
If Not bFound Then
bRet = False
Else
If Len( sDia ) = 1 Then sDia = "0" & sDia
End If
' Busca el mes
bFound = False
While idx < nLen And Not bFound And bRet
sCar = Mid( sFecha, idx, 1 )
If sCar = "/" Or sCar = "." Or sCar = "-"Then
If IsNumeric( sMes ) Then nMes = CLng( sMes )
bFound = True
Else
sMes = sMes & sCar
End If
idx = idx + 1
Wend
If Not bFound Then
bRet = False
Else
If Len( sMes ) = 1 Then sMes = "0" & sMes
End If
sAnyo = Mid( sFecha, idx, nLen-idx+1 )
If IsNumeric( sAnyo ) Then nAnyo = CLng( sAnyo )
If nAnyo < 100 Then
If nAnyo > 50 Then
nAnyo = nAnyo + 1900
Else
nAnyo = nAnyo + 2000
End If
sAnyo = CStr( nAnyo )
End If
If bRet Then
If nAnyo < 1900 Or nAnyo > 2100 Or nDia < 1 Or nDia > 31 Or nMes < 1 Or nMes > 12 Then
bRet = False
Else
If (nMes = 4 Or nMes = 6 Or nMes = 9 Or nMes = 11) And nDia > 30 Then
bRet = False
Else
If (( nAnyo Mod 4 ) <> 0) And nMes = 2 And nDia > 28 Then
bRet = False
Else
If (( nAnyo Mod 100 <> 0 ) And Not ( nAnyo Mod 400 <> 0 )) And nMes = 2 And nDia > 28 Then
bRet = False
End If
End If
End If
End If
End If
If bRet Then
sFecha = sDia & "/" & sMes & "/" & sAnyo
End If
ParseDate = bRet
End Function
Function ParseTime( ByRef sHora )
Dim sH, sM, sCar, nHora, nMin, idx, bFound
bRet = True
sHora = Trim( sHora )
nLen = Len( sHora )
idx = 1
nHora = 0
nMin = 0
' Busca la hora
bFound = False
While idx <= nLen And Not bFound
sCar = Mid( sHora, idx, 1 )
If sCar = ":" Or sCar = "." Or sCar = "," Then
If IsNumeric( sH ) Then nHora = CLng( sH )
bFound = True
Else
sH = sH & sCar
End If
idx = idx + 1
Wend
If Not bFound Then
'Puede ser que entren solo la hora, con lo que el caracter no se encuentra
If IsNumeric( sH ) Then
nHora = CLng( sH )
Else
bRet = False
End If
End If
'window.alert(sH)
If bRet Then
sM = Mid( sHora, idx, nLen-idx+1 )
If IsNumeric( sM ) Then nMin = CLng( sM )
End If
'window.alert(sM)
If nHora > 23 Or nMin > 59 Then
bRet = False
End If
If bRet Then
sHora = CStr( nHora*60 + nMin )
End If
ParseTime = bRet
End Function
' -1 => sFecha1 > sFecha2
' 0 => sFecha1 = sFecha2
' 1 => sFecha1 < sFecha2
Function Date_Relation( sFecha1, sFecha2 )
Dim lFecha1, lFecha2
sFecha1 = Trim( sFecha1 )
sFecha2 = Trim( sFecha2 )
lFecha1 = CLng( Mid(sFecha1,7,4) & Mid(sFecha1,4,2) & Mid(sFecha1,1,2) )
lFecha2 = CLng( Mid(sFecha2,7,4) & Mid(sFecha2,4,2) & Mid(sFecha2,1,2) )
If lFecha1 > lFecha2 Then
Date_Relation = -1
ElseIf lFecha2 > lFecha1 Then
Date_Relation = 1
Else
Date_Relation = 0
End If
End Function
</script>
Codigo JS
Cita:
<script type ="text/javascript">
function ParseDate ( sFecha)
{
var nDia, nMes, nAnyo, sDia, sMes, sAnyo, sCar, nLen, idx, bRet, bFound;
bRet = true;
sFecha = ( sFecha.trim());
nLen = sFecha.length;
idx = 1;
nDia = 0;
nMes = 0;
nAnyo = 0;
bFound = false;
while (idx < nLen && !bFound)
{
sCar = sFecha.substring(idx, 1 );
if (sCar == "/" || sCar == "." || sCar = "-" )
{
if (isNaN(sDia ))
{
nDia = ( sDia );
bFound = true;
}
else
{
sDia = sDia && sCar;
}
idx == idx +1;
}
}
if (!bFound)
{
bRet = false;
}
else
{
if (sDia.length == 1)
{
sDia == "0" && sDia;
}
}
while (idx < nLen && !bFound && bRet)
{
sCar = sFecha.substring(idx, 1 );
if (sCar == "/" || sCar == "." || sCar == "-")
{
if (isNaN( sMes ) )
{
nMes = sMes ;
bFound = true;
}
else
{
sMes = sMes && sCar;
}
}
idx = idx +1;
}
if (!bFound)
{
return false;
}
else
{
if (sMes.length == 1)
{
sMes == "0" && sMes;
}
}
sAnyo = sFecha.substring( idx, nLen-idx+1) ;
if (isNaN (sAnyo))
{
nAnyo = sAnyo;
if (nAnyo < 100)
{
nAnyo = nAnyo + 1900;
}
else
{
nAnyo = nAnyo + 2000;
}
sAnyo = nAnyo.toString();
}
if (bRet)
{
if (nAnyo < 1900 || nAnyo > 2100 || nDia < 1 || nDia > 31 || nMes < 1 || nMes > 12)
{
return false;
}
else
{
if (nMes == 4 || nMes == 6 || nMes == 9 || nMes == 11) && nDia > 30)
{
return false;
}
if (( nAnyo / 4 ) != 0) && nMes == 2 && nDia > 28 )
{
return false;
}
if (((nAnyo %100 != 0) && !(nAnyo % 400 != 0)) && nMes ==2 && nDia > 28)
{
return false;
}
}
}
if (bRet)
{
sFecha = sDia && "/" && sMes & "/" & sAnyo;
}
ParseDate == bRet;
}
function ParseTime( sHora )
{
var sH, sM, sCar, nHora, nMin, idx, bFound;
bRet = true;
sHora = sHora.trim();
nLen = sHora.trim();
idx = 1;
nHora = 0;
nMin = 0;
bFound == false;
while (idx <= nLen && !bFound)
{
sCar = sHora.substring( idx, 1 );
if (scar == ":" ||sCar =="." || sCar == ",")
{
if (isNaN (sh))
{
nHora = sh;
return true;
}
}
else
{
idx = idx +1;
}
}
if (!bFound)
{
if (isNaN (sh))
{
nHora = sh;
}
else
{
return false;
}
}
if (bRet)
{
sM = sHora.substring(idx, nLen-idx+1);
if (isNaN (sm))
{
nMin = sm;
}
}
if (nHora > 23 || nMin > 59)
{
return false;
}
if (bRet)
{
sHora = (nHora*60 + nMin).toString();
}
ParseTime = bRet;
}
function Date_Relation (sFecha, sFecha2)
{
sFecha1 = sFecha1.trim();
sFecha2 = sFecha2.trim();
lfecha1 = sFecha1.substring(7,4) && sFecha1.substring(4,2) && sFecha1.substring(1,2);
lfecha2 = sFecha2.substring(7,4) && sFecha2.substring(4,2) && sFecha2.substring(1,2);
if (lfecha1 > lfecha2)
{
Date_Relation == -1;
}
if (lfecha2> lfecha1)
{
Date_Relation == 1;
}
else
{
Date_Relation == 0;
}
}
</script>
function ParseDate ( sFecha)
{
var nDia, nMes, nAnyo, sDia, sMes, sAnyo, sCar, nLen, idx, bRet, bFound;
bRet = true;
sFecha = ( sFecha.trim());
nLen = sFecha.length;
idx = 1;
nDia = 0;
nMes = 0;
nAnyo = 0;
bFound = false;
while (idx < nLen && !bFound)
{
sCar = sFecha.substring(idx, 1 );
if (sCar == "/" || sCar == "." || sCar = "-" )
{
if (isNaN(sDia ))
{
nDia = ( sDia );
bFound = true;
}
else
{
sDia = sDia && sCar;
}
idx == idx +1;
}
}
if (!bFound)
{
bRet = false;
}
else
{
if (sDia.length == 1)
{
sDia == "0" && sDia;
}
}
while (idx < nLen && !bFound && bRet)
{
sCar = sFecha.substring(idx, 1 );
if (sCar == "/" || sCar == "." || sCar == "-")
{
if (isNaN( sMes ) )
{
nMes = sMes ;
bFound = true;
}
else
{
sMes = sMes && sCar;
}
}
idx = idx +1;
}
if (!bFound)
{
return false;
}
else
{
if (sMes.length == 1)
{
sMes == "0" && sMes;
}
}
sAnyo = sFecha.substring( idx, nLen-idx+1) ;
if (isNaN (sAnyo))
{
nAnyo = sAnyo;
if (nAnyo < 100)
{
nAnyo = nAnyo + 1900;
}
else
{
nAnyo = nAnyo + 2000;
}
sAnyo = nAnyo.toString();
}
if (bRet)
{
if (nAnyo < 1900 || nAnyo > 2100 || nDia < 1 || nDia > 31 || nMes < 1 || nMes > 12)
{
return false;
}
else
{
if (nMes == 4 || nMes == 6 || nMes == 9 || nMes == 11) && nDia > 30)
{
return false;
}
if (( nAnyo / 4 ) != 0) && nMes == 2 && nDia > 28 )
{
return false;
}
if (((nAnyo %100 != 0) && !(nAnyo % 400 != 0)) && nMes ==2 && nDia > 28)
{
return false;
}
}
}
if (bRet)
{
sFecha = sDia && "/" && sMes & "/" & sAnyo;
}
ParseDate == bRet;
}
function ParseTime( sHora )
{
var sH, sM, sCar, nHora, nMin, idx, bFound;
bRet = true;
sHora = sHora.trim();
nLen = sHora.trim();
idx = 1;
nHora = 0;
nMin = 0;
bFound == false;
while (idx <= nLen && !bFound)
{
sCar = sHora.substring( idx, 1 );
if (scar == ":" ||sCar =="." || sCar == ",")
{
if (isNaN (sh))
{
nHora = sh;
return true;
}
}
else
{
idx = idx +1;
}
}
if (!bFound)
{
if (isNaN (sh))
{
nHora = sh;
}
else
{
return false;
}
}
if (bRet)
{
sM = sHora.substring(idx, nLen-idx+1);
if (isNaN (sm))
{
nMin = sm;
}
}
if (nHora > 23 || nMin > 59)
{
return false;
}
if (bRet)
{
sHora = (nHora*60 + nMin).toString();
}
ParseTime = bRet;
}
function Date_Relation (sFecha, sFecha2)
{
sFecha1 = sFecha1.trim();
sFecha2 = sFecha2.trim();
lfecha1 = sFecha1.substring(7,4) && sFecha1.substring(4,2) && sFecha1.substring(1,2);
lfecha2 = sFecha2.substring(7,4) && sFecha2.substring(4,2) && sFecha2.substring(1,2);
if (lfecha1 > lfecha2)
{
Date_Relation == -1;
}
if (lfecha2> lfecha1)
{
Date_Relation == 1;
}
else
{
Date_Relation == 0;
}
}
</script>