Foros del Web » Programando para Internet » Javascript »

Conversion VBs a Javascript

Estas en el tema de Conversion VBs a Javascript en el foro de Javascript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 23/07/2014, 01:33
 
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>
  #2 (permalink)  
Antiguo 23/07/2014, 04:24
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Conversion VBs a Javascript

De entrada deberias explicar que hace el codigo, los errores que te da etc....

A pesar de ello a simple vista se ve por ejemplo esto

Cita:
idx == idx+1;
...
Date_Relation == -1;
esto son comparaciones no una asignaciones.

Código Javascript:
Ver original
  1. idx = idx +1;
  2. //...
  3. Date_Relation = -1;

(He usado cita y highlight para resaltar el codigo para que veas la diferencia)
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 23/07/2014, 05:39
 
Fecha de Ingreso: julio-2014
Mensajes: 4
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Conversion VBs a Javascript

Cita:
Iniciado por quimfv Ver Mensaje
De entrada deberias explicar que hace el codigo, los errores que te da etc....

A pesar de ello a simple vista se ve por ejemplo esto

esto son comparaciones no una asignaciones.

Código Javascript:
Ver original
  1. idx = idx +1;
  2. //...
  3. Date_Relation = -1;

(He usado cita y highlight para resaltar el codigo para que veas la diferencia)

Perdona por el mensaje anterior, es cierto que en algunas cosas me he colado como la asignación y la comparación.
El código de VBS no lo he hecho yo ya que es código que tenemos en mi trabajo ,que anteriormente se hizo en vbs pero hay que pasar algunas cosas a JavaScript y me ha tocado a mi.
Por lo que veo esta hoja en concreto, parsea fechas para llamarlas después en otras funciones de otras hojas de aspx, con JavaScript.
el problema lo tengo en esta hoja, ya que no hago bien la "traducción" y cuando incluyo esta hoja en las otras pues el parse de las fechas no es el correcto.
Por ejemplo tengo otra hoja que hace "X" cosas y tiene una validación que llama a la función de ParseDate .
Cita:
if (ParseDate(sFechaInicio ))
{
window.alert( "<%=T.warningFechaInicioNoEsCorrecta %>" );
document.CampanyaModificacion.txtFechaInicio.selec t() ;
return false;
}

Básicamente es eso, llevo días intentando corregirlo pero no hay manerade que las validaciones me funcionen.
  #4 (permalink)  
Antiguo 23/07/2014, 05:47
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Conversion VBs a Javascript

Quizas deberias buscar antes de preguntar

googlea validacion fechas javascript encontras scripts a montones, analizalos y quizas encontraras lo que buscas o algo que haga lomismo sin tener que traducir nada.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: conversion, funcion, js, vbs
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 02:05.