파이썬 time.struct_time
객체를 객체로 어떻게 변환 datetime.datetime
합니까?
첫 번째 라이브러리를 제공하는 라이브러리와 두 번째 라이브러리를 원하는 두 번째 라이브러리가 있습니다.
파이썬 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))
tm_isdst
데이터가 손실 됩니까? 나는 날짜 객체를 결과로 반환 할 정도로 순진 남아있다, 그렇게 생각 None
에 .dst()
경우에도 struct.tm_isdst
입니다 1
.
mktime()
하도록 지정합니다 . 이 모호 할 때 잘못 현지 시간을 선택합니다 (예를 들어, -의 - DST 종료시 ( "후퇴") 전환)하는 경우 수도 인 경우, 또는 주어진 플랫폼은 무시 입력 . 또한 로컬 시간대가 과거에 다른 utc 오프셋을 가지고 있고 C 가 이전 utc 오프셋 값을 제공 할 수있는 히스토리 tz 데이터베이스를 사용하지 않는 경우 잘못된 (예 : 1 시간) 값도 리턴 할 수 있습니다. tm_isdst
time.mktime()
mktime()
mktime()
struct.tm_isdst
-1
mktime()
tm_isdst
mktime()
mktime()
mktime()
무시하지 않으면 tm_isdst
(내 것입니다) fromtimestamp()
정보 를 확실히 잃어 버립니다 : 현지 시간을 나타내는 반환 된 순진 datetime
객체가 모호 할 수 있습니다 (타임 스탬프-> 현지 시간이 결정적입니다 (윤초를 무시하면) local time -> timestamp may be ambiguous e.g., during end-of-DST transition). Also,
fromtimestamp ()`는 역사적 tz 데이터베이스를 사용하지 않는 경우 잘못된 utc 오프셋을 선택할 수 있습니다.
이처럼 :
>>> structTime = time.localtime()
>>> datetime.datetime(*structTime[:6])
datetime.datetime(2009, 11, 8, 20, 32, 35)
*
and **
syntax를 사용하면 listy 또는 dicty type 객체를 확장하여 인수를 분리 할 수 있습니다. 자세한 내용은 docs.python.org/2/tutorial/… 을 참조하십시오
t=time.strptime("30 Jun 1997 22:59:60", "%d %b %Y %H:%M:%S"); datetime.datetime(*t[:6])
datetime
. datetime(*t[:5]+(min(t[5], 59),))
예 : accept "2015-06-30 16:59:60 PDT"
.
이것은 귀하의 질문에 대한 직접적인 대답이 아닙니다 (이미 잘 답변되었습니다). 그러나 몇 번이나 기본 사항에 대해 물린 적이 있었으므로 다른 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 또는 정상이라고 생각하는 모든 것을 정규화 할 수 있습니다.
*_parsed
feedparsed의 모든 필드 는 날짜 구문 분석 문서 에서 확인할 수 있으므로 UTC로 이미 정규화되어 있으므로 중복됩니다.
datetime
할 때 손실 되는 객체에 시간대 정보를 유지하는 것 feedparser
입니다.