2016-07-25 3 views
0

Используя следующий код, я хочу преобразовать дату и время ввода в эпоху. Проблема в том, я получаю выход эпохальное, но когда я проверить его с помощью преобразования онлайн (http://www.epochconverter.com/), эпоха не переводит на дату и время I ввода:Переход Epoch не работает как ожидалось

date_time2 = '09.03.1999' + " " + "13:44:17.000000" 
pattern2 = '%d.%m.%Y %H:%M:%S.%f' 
epoch2 = int(time.mktime(time.strptime(date_time2, pattern2))) 
print epoch2 
+1

Это работает для меня. Какой результат вы получаете от онлайн-конвертера? – bernie

+1

Я получаю 921005057, когда я запускаю блок. Однако, когда я помещал эту метку в онлайн-конвертер, она говорит, что отметка времени - 18:44:17 GMT (обратите внимание, что время ввода уже GMT). Он должен сказать: 13:44:17 GMT – user3498593

+0

Вам нужно сделать что-то вроде этого? Http://stackoverflow.com/questions/19527351/python-how-to-convert-a-timezone-aware-timestamp-to -utc-without-know-if-dst – bernie

ответ

1

Что происходит здесь:

  • time.strptime производит time.struct_time, который близко отражает C's tm struct;
  • В то же время документация time.mktime достоверна, что она производит по местному времени от struct_time, а не по GMT.

Так что вам нужна функция, которая преобразует ваш struct_time в GMT. Такая функция спрятана в python, в модуле calendar.

Попробуйте вместо этого:

date_time2 = '09.03.1999' + " " + "13:44:17.000000" 
pattern2 = '%d.%m.%Y %H:%M:%S.%f' 

# get a time structure 
tm = time.strptime(date_time2, pattern2) 

# convert to gmt 
gmt_epoch = int(calendar.timegm(tm)) 

В этом случае мы в конечном итоге с:

>>> gmt_epoch 
920987057 

Подключив что на сайте вы дали производит, что это GMT: Вт, 9 марта 1999 13:44:17 GMT

+0

Спасибо. Какие дополнительные модули мне нужно импортировать для этого? Я получаю, что объект time.struct_time не имеет атрибута «tm_gmtoff» при запуске. Я уже импортирования: 'от даты и времени импорта DateTime как дт, DateTime, timedelta времени импорта из даты и времени импорта DateTime из dateutil импорта TZ импорта pytz' – user3498593

+0

Я использую Python 2.7 на пути – user3498593

+0

'tm_gmtoff' доступен в Python 3.3 и выше: https://docs.python.org/3/library/time.html#time.struct_time См. мой ответ. – bernie

1

(Я уже поддержал @donkopotamus 'здесь: https://stackoverflow.com/a/38558696/42346)

Используя этот вопрос: https://stackoverflow.com/a/19527596/42346, мы можем посмотреть, как вы можете конвертировать свое местное время в GMT. Для этого требуется pytz.

import datetime as dt 
import pytz 

naive_date = dt.datetime.strptime('09.03.1999' + " " + "13:44:17.000000", 
            '%d.%m.%Y %H:%M:%S.%f') 
localtz = pytz.timezone('Hongkong') 
date_aware = localtz.localize(naive_date,is_dst=None) 
utc_date = date_aware.astimezone(pytz.utc) 
int(time.mktime(utc_date.utctimetuple())) 

Результат:

920987057 

enter image description here

Смежные вопросы