파이썬 time.struct_time
객체를 객체로 어떻게 변환 datetime.datetime
합니까?
첫 번째 라이브러리를 제공하는 라이브러리와 두 번째 라이브러리를 원하는 두 번째 라이브러리가 있습니다.
답변
time.mktime () 을 사용 하여 Epoch 이후 시간 튜플 (localtime)을 초로 변환 한 다음 datetime.fromtimestamp () 를 사용 하여 datetime 오브젝트를 가져 오십시오.
from datetime import datetime
from time import mktime
dt = datetime.fromtimestamp(mktime(struct))
답변
이처럼 :
>>> structTime = time.localtime()
>>> datetime.datetime(*structTime[:6])
datetime.datetime(2009, 11, 8, 20, 32, 35)
답변
이것은 귀하의 질문에 대한 직접적인 대답이 아닙니다 (이미 잘 답변되었습니다). 그러나 몇 번이나 기본 사항에 대해 물린 적이 있었으므로 다른 time 필드가 가질 수있는 것과 비교하여 time.struct_time 객체가 제공하는 내용을 면밀히 검토해야 할만큼 스트레스를 줄 수 없습니다.
time.struct_time 객체와 다른 날짜 / 시간 문자열이 모두 있다고 가정하면 두 가지를 비교하고 달리 할 수있는 경우 데이터가 손실되지 않고 순진한 datetime 객체를 실수로 만들지 않는지 확인하십시오.
예를 들어, 우수한 feedparser 모듈은 “published”필드를 리턴하고 “published_parsed”필드에 time.struct_time 오브젝트를 리턴 할 수 있습니다.
time.struct_time(tm_year=2013, tm_mon=9, tm_mday=9, tm_hour=23, tm_min=57, tm_sec=42, tm_wday=0, tm_yday=252, tm_isdst=0)
이제 “게시 된”필드를 통해 실제로 얻을 수있는 것에 주목하십시오.
Mon, 09 Sep 2013 19:57:42 -0400
으로 스톨만 의 수염! 시간대 정보!
이 경우 게으른 사람은 훌륭한 dateutil 모듈을 사용하여 시간대 정보를 유지할 수 있습니다.
from dateutil import parser
dt = parser.parse(entry["published"])
print "published", entry["published"])
print "dt", dt
print "utcoffset", dt.utcoffset()
print "tzinfo", dt.tzinfo
print "dst", dt.dst()
그것은 우리에게 :
published Mon, 09 Sep 2013 19:57:42 -0400
dt 2013-09-09 19:57:42-04:00
utcoffset -1 day, 20:00:00
tzinfo tzoffset(None, -14400)
dst 0:00:00
그런 다음 시간대 인식 날짜 시간 객체를 사용하여 모든 시간을 UTC 또는 정상이라고 생각하는 모든 것을 정규화 할 수 있습니다.