Artículo
· 26 jul, 2022 Lectura de 10 min

Conversión de zona horaria usando Python Embebido

La fecha y la hora son factores importantes en nuestra vida. Porque todas las aplicaciones son interesantes según la fecha y la hora. Pero el mundo está dividido en múltiples zonas horarias. Si nuestro producto se lanza al mundo, para mantener el historial de eventos, debemos convertir todas las horas a nuestra hora local o UTC (Tiempo Universal Coordinado). Por lo que sé, muchos lenguajes de programación conocidos de C#, JavaScript, Java, etc., ofrecían la librería para convertir la fecha y la hora, es decir, con un nombre de zona horaria podemos convertir sin conocer la diferencia horaria.

La base de datos TZ no existe en los productos de InterSystems. En el pasado, escribí la función en C# (C# tiene una librería para esto) y la usé dentro de InterSystems como una clase contenedora.

Pero ahora, IRIS comenzó a ser compatible con Python Embebido. Por eso, podemos usar la conversión de zona horaria de Python en InterSystems fácilmente.


Librerías requeridas

  1. datetime  - Soporte básico de tipo fecha y hora - https://docs.python.org/3/library/datetime.html
  2. pytz - librería de base de datos tz - https://pypi.org/project/pytz/

 

Cómo instalar

Una vez instalado IRIS, ve a la carpeta bin de InterSystems (\Intersystems\IRIS\bin) y ejecuta

 

Windows:

irispip install --target <source>\Intersystems\IRIS\mgr\python datetime

irispip install --target <source>\Intersystems\IRIS\mgr\python pytz

 

Linux:

pip3 install --target /InterSystems/IRIS/mgr/python datetime

pip3 install --target /InterSystems/IRIS/mgr/python pytz

 

Cómo gestionar una librería en IRIS

Class Utility.TimezoneConversion

{

/// Convierta la fecha y hora y regrese como objeto DateTime

/// CTime - Introducir fecha y hora

/// ToTimezone - Qué formato necesitamos para cambiar la fecha y la hora

ClassMethod Convert(CTime As %String, ToTimezone As %String) As %String

{

Set ret = $$$OK

try {

#;datetime library to calculate the date or time

Set DateTime = ##class(%SYS.Python).Import("datetime")

#;timezone library to convert the one timezone to another timezone

Set Pytz = ##class(%SYS.Python).Import("pytz")

#; timezone apply

Set DateTimeConeverted = DateTime.datetime(+$P(CTime,":",1),+$P(CTime,":",2),+$P($P(CTime,":",3)," ",1),+$P($P(CTime,":",3)," ",2),+$P(CTime,":",4),+$P(CTime,":",5)).now(Pytz.timezone(ToTimezone))

Set ret = DateTime.datetime.now(Pytz.timezone(ToTimezone))

}

catch(ex) {

Set ret = ex.AsStatus()

}

Quit ret

}

/// Convert date time into one timezone format to another timezone format

/// Input Format - YYYY:MM:DD HH:MM:SS

ClassMethod DisplayConversion() As %Status

{

Set ToFormat = "%Y:%m:%d %H:%M:%S"

Set CTime = "2022:07:12 12:00:00"

Set ToTimezone = "America/Mexico_City"

Set ret = ..Convert(CTime,ToTimezone)

If $IsObject(ret){

Write "InputDateTime:"_CTime,!

Write "ConvertedDateTime:"_ret.strftime(ToFormat),!

Write "Timezone Name:"_ret.tzname(),!

Write "Timezone detail:"_ToTimezone,!

}Else{

Write "Error:"_ret,!

}

}

}

 

Salida


Lista de todas las zonas horarias de Python

 
Spoiler


Rendimiento

En cuanto al rendimiento, en comparación con el contenedor, Python Embebido ofrece una respuesta más rápida y fácil de implementar.

Comentarios (0)1
Inicie sesión o regístrese para continuar