Tengo objetos datetime en tiempo UTC y quiero convertirlos a marcas de tiempo UTC. El problema es que time.mktime hace ajustes para el tiempo local.¿Cómo creo una marca de tiempo de unix que no se ajuste para localtime?
Así que aquí es un poco de código:
import os
import pytz
import time
import datetime
epoch = pytz.utc.localize(datetime.datetime(1970, 1, 1))
print time.mktime(epoch.timetuple())
os.environ['TZ'] = 'UTC+0'
time.tzset()
print time.mktime(epoch.timetuple())
aquí hay una salida:
Python 2.6.4 (r264:75706, Dec 25 2009, 08:52:16)
[GCC 4.2.1 (Apple Inc. build 5646) (dot 1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> import pytz
>>> import time
>>> import datetime
>>>
>>> epoch = pytz.utc.localize(datetime.datetime(1970, 1, 1))
>>> print time.mktime(epoch.timetuple())
25200.0
>>>
>>> os.environ['TZ'] = 'UTC+0'
>>> time.tzset()
>>> print time.mktime(epoch.timetuple())
0.0
Así que, obviamente, si el sistema está en hora UTC ningún problema, pero cuando no lo es, es un problema . Configurar la variable de entorno y llamar a time.tzset funciona, pero, ¿es seguro? No quiero ajustarlo para todo el sistema.
¿Hay alguna otra manera de hacerlo? ¿O es seguro llamar a time.tzset de esta manera?