Pregunta
Mathew Lambert · Oct 22

Trabajando con distintas zonas horarias

Tenemos un escenario bastante complejo pero creo que es sencillo de explicar y que quede claro.

Estamos desarrollando un ejecutador de tareas que corre en un servidor con una timezone indiferente.

Las tareas se tienen que ejecutar cada dia pero a una hora definida para una cierta timezone

Guardamos en base de datos la hora a la que queremos ejecutar la tarea y de que timezone es (no vayas al pozo de guardar en UTC, ya que cuando tengas DST será a horas distintas)

 

Lo que queremos es que cuando obtengamos nuestra tarea de la DB, convertir el 02:00 Europe/Madrid ya sea a UTC o a local (servidor)

 

He encontrado la clase HS.Timezone.Server.Service pero no soluciona ningun problema.

¿Hay algun método en intersystems para hacer estas conversiones a timezone y a utc o local?

00
1 0 2 32
Log in or sign up to continue

Hola Mathew,

¿Le has echado un vistazo a Ens.Util.Time?

USER>set now = $horolog
USER>write $zdt(now,3)
2021-10-29 11:23:49
USER>write ##class(Ens.Util.Time).ConvertDateTime(now,"%q(3)","%K(-6)%Y-%m-%d %H:%M:%S",,.status,)
2021-10-29 05:23:49

Te puede servir para convertir horas entre zonas horarias, sabiendo el offset sobre UTC.

Si, pero el problema radica ahí, en saber el offset.

Otros sistemas integran la tzdatabase a fecha de lanzamiento (py, java) y a priori parecería que HS.Timezone.Server.Service también, pero no estamos seguros