Как я создаю метку времени Unix, которая не корректируется для localtime?

Таким образом, у меня есть объекты даты и времени во время UTC, и я хочу преобразовать их в метки времени UTC. Проблема, time.mktime вносит изменения для localtime.

Таким образом, вот некоторый код:

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())

Вот некоторый вывод:

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

Так, очевидно, если система не находится во время UTC без проблем, но когда это не, это - проблема. При установке переменной среды и вызове time.tzset работ, но это безопасно? Я не хочу корректировать его для целой системы.

Там другой путь состоит в том, чтобы сделать это? Или действительно ли безопасно назвать time.tzset этим путем.

5
задан sheats 23 July 2010 в 03:00
поделиться