2017-11-22 18 views
0

누구나 ISO8601 타임 스탬프의 시간대 값 (분, 시간 등)을 얻는 방법을 알고 있습니까? 나는 tzinfo 객체에서 그것을 볼 수 있지만, 값을 얻는 것처럼 보이지 않습니다. 여기까지 제가 한 일은 없지만 -28800이라는 값을 어떻게 변수에 넣을 수 있습니까?파이썬 get datetime 개체에서 시간대 값

import dateutil.parser 
import datetime 
firststarttime = '2008-12-31T23:00:00-08:00' 
datetime_obj = dateutil.parser.parse(firststarttime) 
datetime_obj 
Out[57]: datetime.datetime(2008, 12, 31, 23, 0, tzinfo=tzoffset(None, -28800)) 
datetime_obj.tzinfo 
Out[46]: tzoffset(None, -28800) 

답변

0

그냥 사용 이는, 사실, 내가 행복하게 다른 답을 알고 있지만 것이라고 할 수있는 가장 효율적인 방법이 아니다, 이것은 내가 할 거라고 어떻게 (당신은 위의 파이썬 2.7에 인 경우) :

timedelta를 얻을 수 utcoffset()를 사용
datetime_obj.utcoffset().total_seconds() 

total_seconds() 초로 변환 할 수 있습니다. 그들이하는 일에 대한 정보를 얻기 위해 링크 된 문서를 읽을 수 있습니다.

이 오프셋을 다른 datetime에 추가해야한다면 utcoffset()을 사용하여 timedelta으로 돌아갈 수 있습니다. 반환 값이 약간 이상하게 보일 수 있지만 :

datetime.timedelta(-1, 57600) # equivelant to datetime.timedelta(seconds=-28800) 

이는 방식 때문에 timedelta이다 또한 datetime.timedelta에 주목 음의 값을 정규화.

0

문제는 값이 해당 개체에 고정 된 것처럼 보입니다.

import dateutil.parser 
import datetime 
import re 
firststarttime = '2008-12-31T23:00:00-08:00' 
datetime_obj = dateutil.parser.parse(firststarttime) 
s = str(datetime_obj.tzinfo) 
p = re.compile(",\s.?\d+") 
result = p.search(s).group() 
result = int(result[2:]) 

인쇄

print(result) 
>>> -28800 # as integer 
+0

감사합니다. eugenhu의 솔루션은 완벽하게 작동했습니다. – Mike