Javascript varToDateTime Tiempo


([N4] rpaton) #1

Hola:

 Tengo un proceso en JS al que paso una variable Tiempo FEC_TIENDA. En el proceso la recupero con la instrucción:

 var fec_tienda = theRoot.varToDateTime( "FEC_TIENDA" );

 Si luego hago por ejemplo: alert(fec_tienda) para ver el valor en vAdmin me indica en lugar de la fecha el texto "Invalid Date"
 ¿Qué estoy haciendo mal? Con variables que son Fecha en lugar de Tiempo si lo hace bien.

 Saludos.

 Ricardo Patón

([N2] ceferino) #2

Buenas tardes, rpaton.

Deberías convertir la fecha de velneo al formato date() de JavaScript. Creo que el siguiente enlace te servirá de ayuda:

http://lineadecodigo.com/javascript/convertir-una-cadena-a-fecha-en-javascript/

Un cordial saludo,

Ceferino


([N1] wikan) #3

No debería tener que hacer ninguna conversión, para eso ya está el método varToDateTime
Lo que tienes que comprobar que realmente estás pasando una variable tipo tiempo, en ambos procesos.


([N2] ceferino) #4

Hola Wikan:

Me temo que el tema de las fechas y las horas son diferentes en velneo y JavaScript.
El metodo varToDateTime, no devuelve ningún objeto JavaScript, devuelve un tipo de dato de QT, js no dispone de ese tipo de dato.
Yo he tenido que recoger la hora y la fecha de forma independiente y conbinarlas para trabajar con un objeto date() de js.

//Recogemos en una variable el campo Fecha de una tabla velneo

var fch = TheRoot.fieldToDate(“FECHA”)

//El objeto instanciado corresponde a un objeto Date(),
// el valor de fch seria 2014-11-26 00:00:00
// pasamos el campo hora de velneo a una variable tipo integer, que corresponde al número de segundos
//Añadimos el número de segundos al objeto Date()

fch.setSeconds(TheRoot.fieldToInt(“HORA”))

Ahora el valor de la variable fch se compone de una fecha y una hora:
2014-11-26 16:42:00

Me gustaría, si alguien lo ha hecho, sea tan amable de compartirlo…

Saludos
Ceferino


([N1] wikan) #5

Si, son tipos diferentes. Pero si la API tienen método que en teoría deberían convertir, puede que sea un bug o que no se está pasado el dato correcto.

El objecto Date es un tiempo, por lo que fecha y tiempo de Velneo deben ser un tipo Date en javascript, uno con hora y el otro con hora 00:00:00, es lo que entiendo.

Por eso, lo que le pregunto a rpaton es que verifique que el contenido que le está pasando un realmente un tiempo y que los tipos de las variables en ambos procesos están declarados comos tiempo.


([N4] rpaton) #6

Hola:

 Tengo una función remota que se encarga de sincronizar las tablas entre la aplicación Tienda y la Central. Cada vez que la aplicación Tienda hace una sincronización guarda la fecha en tipo Tiempo. Este dato guardado se envía a la función remota para que solo se envíen a la Tienda los registros que ha sido creado o modificados después de dicha fecha.

 Por error en lugar de pasar a la función remota ese campo Tiempo guardado estaba pasando otro de tipo numérico. De ahí el mensaje de error.

 Finalmente quedó resuelto con lo siguiente:

 Capturo FEC_TIENDA en JS con : var fec_tienda = theRoot.varToDateTime( "FEC_TIENDA" );
 Para la comparación utilizo : if ( (fec_tienda < register.fieldToDateTime("#MOD_FCH")) | 
                                    (fec_tienda < register.fieldToDateTime("#ALT_FCH")) ) {

                                ......

                               }
 Indicando en la asignación y en la comparación que son DateTime tanto la variable FEC_TIENDA como los campos a comparar MOD_FCH y ALT_FCH se resuelto todo satisfactoriamente.

  Gracias a los dos por la atención prestada y disculpar por si os he hecho perder tiempo con el error de paso de variable.

 Saludos.

 Ricardo Patón

([N3] pacosatu) #7

Hola Ricardo.

Es bueno equivocarse de vez en cuando para sacar nuevas conclusiones.

Me gustaría confirmar que las variables Tiempo de Velneo se pasan correctamente de Velneo a Javascript y viceversa.

El siguiente código pasa la Fecha/Hora a Javascript y éste devuelve correctamente los componentes del tiempo (HH:mm:ss)
Por lo tanto el objeto Date (tTiempo) se crea correctamente en javascript.

Set (TTIEMPO, currentDateTime)
Mensaje (/JAVASCRIPT/ var tTiempo = theRegister.varToDateTime(“TTIEMPO”); tTiempo.getHours() + “:” + tTiempo.getMinutes() + “:” + tTiempo.getSeconds();, Información,)

ceferino revisa tu código.

Saludos
Paco Satué


([N2] ceferino) #8

Jajaja, Paco:
Más que mi código revisaré mis neuronas, ¿o es singular?.
Lo cierto es que hace ya tiempo me encontré con un tema de campos tipo time para traspasar de velneo a js y viceversa. Ahora, leyéndote, entiendo que algún error habría cometido y como no lograba resultados opté por componer el campo Time de esa manera.
Y así estará por ahí funcionando. Buscaré la implementación del mismo para intentar rectificarla.

Gracias, un placer leeros chicos

Ceferino