[python] 파이썬에서 에포크 이후의 초를`datetime` 객체로 어떻게 변환합니까?

time모듈은 시대 이후 초를 사용하여 초기화 할 수 있습니다 :

>>> import time
>>> t1=time.gmtime(1284286794)
>>> t1
time.struct_time(tm_year=2010, tm_mon=9, tm_mday=12, tm_hour=10, tm_min=19,
                 tm_sec=54, tm_wday=6, tm_yday=255, tm_isdst=0)

datetime.datetime같은 방식으로 객체 를 초기화하는 우아한 방법이 있습니까?



답변

datetime.datetime.fromtimestamp 시간대를 아는 경우와 동일한 결과를 얻을 수 있습니다. time.gmtime

>>> datetime.datetime.fromtimestamp(1284286794)
datetime.datetime(2010, 9, 12, 11, 19, 54)

또는

>>> datetime.datetime.utcfromtimestamp(1284286794)
datetime.datetime(2010, 9, 12, 10, 19, 54)


답변

에포크부터 초 datetime까지 strftime:

>>> ts_epoch = 1362301382
>>> ts = datetime.datetime.fromtimestamp(ts_epoch).strftime('%Y-%m-%d %H:%M:%S')
>>> ts
'2013-03-03 01:03:02'


답변

문서에서 신기원 이후 초부터 시간대를 인식하는 datetime 객체를 얻는 권장 방법은 다음과 같습니다.

파이썬 3 :

from datetime import datetime, timezone
datetime.fromtimestamp(timestamp, timezone.utc)

다음을 사용하여 Python 2pytz :

from datetime import datetime
import pytz
datetime.fromtimestamp(timestamp, pytz.utc)


답변

datetime.datetime입니다. fromtimestamp (타임 스탬프) 및. 1970 년 1 월 1 일 이전의 날짜에 대해서는 utcfromtimestamp (타임 스탬프)가 창에서 실패하지만 음의 유닉스 타임 스탬프는 유닉스 기반 플랫폼에서 작동하는 것 같습니다. 문서는 다음과 같이 말합니다.

타임 스탬프가 플랫폼 C gmtime () 함수가 지원하는 값 범위를 벗어나면 ValueError가 발생할 수 있습니다. 1970 년에서 2038 년으로 제한되는 것이 일반적입니다

Issue1646728 도 참조하십시오


답변