С http://docs.python.org/library/time.html:
time.mktime (т):
Это обратная функция localtime (). Его аргумент является
struct_time или полный 9-кортеж (так как
нужен флаг dst; используйте -1 как dst
флаг, если он неизвестен), который выражает
время по местному времени, а не по UTC. Это
возвращает число с плавающей запятой, для
совместимость со временем (). Если
входное значение не может быть представлено как
допустимое время, либо OverflowError, либо
ValueError будет повышен (который
зависит от того, является ли недействительным значение
пойман Python или основной
С библиотеками). Самая ранняя дата
который может генерировать время
зависит от платформы.
Это говорит о том, что вам нужно указывать свой кортеж по местному времени, а не по UTC. Тем не менее, я хочу указать в UTC; Я не хочу использовать местный часовой пояс на коробке.
Есть ли способ, которым я могу перейти от даты и времени к отметке времени, где время рассматривается как UTC? Я хочу иметь возможность сохранять все в нормализованной форме UTC (объект datetime) при преобразовании в и из отметок времени.
Я хочу иметь возможность сделать что-то подобное, и чтобы x и y были одинаковыми:
y = datetime.datetime.utcfromtimestamp(time.mktime(x.timetuple()))
x = dateutil.parser.parse('Wed, 27 Oct 2010 22:17:00 GMT')
stamp = time.mktime(x.timetuple())
y = datetime.datetime.utcfromtimestamp(stamp)
x
datetime.datetime(2010, 10, 27, 22, 17, tzinfo=tzutc())
y
datetime.datetime(2010, 10, 28, 6, 17)