Hora de otro País


([N1] Jose Laya) #1

Buenas me encuentro en Venezuela, tengo una tabla con un campo "hora_creacion" cuyo contenido inicial lo he puesto en "currentTime()". La hora que me coloca es la de España, existe alguna forma de que resuelva la hora de la localidad donde me encuentro o tengo que hacer el calculo por mi lado?


([N1] Velasco) #2

Buenas.

Si el currentTime() no te funciona tienes alguna función que , a lo mejor, te pueden ayudar,

Si miras en las funciones de sistema está: getSysTimeZone() Devuelve la zona horaria como la diferencia de horas con respecto al

tiempo universal (UTC).

En las funciones de tiempo tienes: currentUTCDateTime. http://velneo.es/info_v7_71_es/general/asistente_de_formulas/#currentutcdatetime

Jugando con éstas, extrayendo la hora del tiempo y sumándole la diferencia horaria puede salirte.

En una idea a ver si te sirve.

Un saludo.

 

PD: Imagen equivocada.

 

 

Jorge Velasco Fernández

jvelasco@theseedsc.com

www.theseedsc.com

 

 

 

 

 

 

 


([N1] Jose Laya) #3

Perfecto, creo que lo que haré es hacer una función en la caja de datos que haga uso de estas que me haz mencionado antes para y me resuelva la hora local, de esta manera factorizo la formula y no tengo que estar recordándola o modificando en cada campo luego que la implemente. en lo que la tenga la publico, MUCHAS GRACIAS.


(Chema) #4

Ten en cuenta que si la fórmula la ejecutas en el servidor de la nube, estos están con la hora GMT+0, por lo que no te serviría. Si es así, tendrías que obtener el valor del currentTime() en local, o sea, en primer plano. 


([N1] Jose Laya) #5

Entonces en principio este es el error.

Explico que es lo que estoy haciendo. "no se si sea la mejor forma, pero es la que he encontrado para hacerlo".

Tengo una tabla de "x" de la cual quiero generar un log cuando se de de alta un registro, y cuando ciertos campos sean modificados, guardando el nombre del usuario que lo hizo, la fecha y la hora en que lo hizo. Para lograrlo lo estoy haciendo por medio de eventos de tabla.

Para cada evento tengo un proceso diferente, en el caso de las altas:

En el caso de las modificaciones:

En la tabla LOG tengo en un campo el nombre del usuario obtenido de la función sysUserName(), la fecha actual currentDate(), y la hora actual currentTime().

Entonces lo que voy a tener que hacer es:

  1. Crear una variable global en la caja de datos llamada ZONA_LOCAL.

  2. Inicializar la variable global ZONA_LOCAL al cargar el marco o formulario autoexec con el valor devuelto por la función getSysTimeZone()

  3. Crear una función llamada MIFECHA en la caja de datos que de uso de la variable global ZONA_LOCAL para realizar el calculo de la fecha actual basado en la fecha UTC con la diferencia de la localidad

  4. Crear una función llamada MIHORA en la caja de datos que de uso de la variable global ZONA_LOCAL para realizar el calculo de la hora actual basado en la hora UTC con la diferencia de la localidad

Creo que con esto me vale para hacer lo que quiero, que me corrijan si me equivoco o hay otra forma de hacerlo.

Saludos. 





([N1] Jose Laya) #6

Actualizo, la mejor solución en este caso (que lo que llevo es una bitácora de la tabla), es usa un campo timo Tiempo, y su valor inicial currentDateTime().

Al mostrar la fecha esta sera la correspondiente a la localidad de forma automática.