Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/07/2014, 01:33
xaviersanchez88
 
Fecha de Ingreso: julio-2014
Mensajes: 4
Antigüedad: 9 años, 9 meses
Puntos: 0
Conversion VBs a Javascript

Tengo una hoja donde el codigo esta hecho en VBS y mi trabajo ha sido traducirlo a JavaScript para que funcione.
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>


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>