2015-10-07 3 views
0

Когда я пытаюсь преобразовать из временной метки UTC в обычную дату и добавить правильный часовой пояс, я не могу найти способ преобразовать время обратно в временную метку Unix.Преобразование даты и времени в unix timestamp в python

Что я делаю worng?

utc_dt = datetime.utcfromtimestamp(self.__modified_time) 
from_zone = tz.tzutc() 
to_zone = tz.tzlocal() 

utc = utc_dt.replace(tzinfo=from_zone) 
central = utc.astimezone(to_zone) 

Центральная равно

2015-10-07 12: 45: 04 + 02: 00

Это то, что я при выполнении кода, и мне нужно чтобы преобразовать время назад в метку времени.

+3

может эта работа https://docs.python.org/2/library/calendar.html#calendar.timegm – scrineym

+0

Да, что мне нужно, :) PLS сделать aswer с ним, :) – ParisNakitaKejser

+0

связанных: [Преобразование datetime.date в UTC timestamp в Python] (http://stackoverflow.com/q/8777753/4279) – jfs

ответ

1
from datetime import datetime 
from datetime import timedelta 
from calendar import timegm 

utc_dt = datetime.utcfromtimestamp(self.__modified_time) 
from_zone = tz.tzutc() 
to_zone = tz.tzlocal() 

utc = utc_dt.replace(tzinfo=from_zone) 
central = utc.astimezone(to_zone) 
unix_time_central = timegm(central.timetuple()) 
+1

downvote , Это неверно. 'timegm()' ожидает время UTC, а не центральное. Вы можете проверить его, сравнив 'unix_time_central' с' self .__ modified_time' (они должны быть равны). – jfs

0

Чтобы получить осведомленный DateTime, представляющий время в локальном часовом поясе, который соответствует данной Unix времени (self.__modified_time), вы можете передать местный часовой пояс для fromtimestamp() непосредственно:

from datetime import datetime 
import tzlocal # $ pip install tzlocal 

local_timezone = tzlocal.get_localzone() # pytz tzinfo 
central = datetime.fromtimestamp(self.__modified_time, local_timezone) 
# -> 2015-10-07 12:45:04+02:00 

Чтобы получить Unix время назад в Python 3:

unix_time = central.timestamp() 
# -> 1444214704.0 

unix_time равно self.__modified_time (игнорируя плавающую пои nt ошибок и «правильных» часовых поясов). To get the code for Python 2 and more details, see this answer.

-1

Arrow (http://crsmithdev.com/arrow/), как представляется, в конечном итоге Python, связанные со временем библиотеку

import arrow 
ts = arrow.get(1455538441) 
# ts -> <Arrow [2016-02-15T12:14:01+00:00]> 
ts.timestamp 
# 1455538441 
Смежные вопросы