형식의 문자열 "%d/%m/%Y"
을 타임 스탬프 로 변환하는 방법은 무엇입니까?
"01/12/2011" -> 1322697600
답변
>>> import time
>>> import datetime
>>> s = "01/12/2011"
>>> time.mktime(datetime.datetime.strptime(s, "%d/%m/%Y").timetuple())
1322697600.0
답변
나는 ciso8601
datetime의 strptime보다 62 배 빠른을 사용 합니다.
t = "01/12/2011"
ts = ciso8601.parse_datetime(t)
# to get time in seconds:
time.mktime(ts.timetuple())
답변
문자열을 날짜 객체로 변환하려면
from datetime import date, datetime
date_string = "01/12/2011"
date_object = date(*map(int, reversed(date_string.split("/"))))
assert date_object == datetime.strptime(date_string, "%d/%m/%Y").date()
날짜 개체를 POSIX 타임 스탬프로 변환하는 방법은 시간대에 따라 다릅니다. 에서 변환 datetime.date
파이썬에서 UTC 타임 스탬프에 :
-
날짜 객체는 UTC 자정을 나타냅니다
import calendar timestamp1 = calendar.timegm(utc_date.timetuple()) timestamp2 = (utc_date.toordinal() - date(1970, 1, 1).toordinal()) * 24*60*60 assert timestamp1 == timestamp2
-
날짜 개체는 현지 시간으로 자정을 나타냅니다
import time timestamp3 = time.mktime(local_date.timetuple()) assert timestamp3 != timestamp1 or (time.gmtime() == time.localtime())
UTC와 현지 시간 자정이 같은 경우가 아니면 타임 스탬프가 다릅니다.
답변
>>> int(datetime.datetime.strptime('01/12/2011', '%d/%m/%Y').strftime("%s"))
1322683200
답변
답변은 입력 날짜 시간대에 따라 다릅니다. 날짜가 현지 날짜 인 경우 katrielalex가 말한 것처럼 mktime ()을 사용할 수 있습니다.이 짧은 버전 대신 datetime을 사용한 이유는 모르겠습니다.
>>> time.mktime(time.strptime('01/12/2011', "%d/%m/%Y"))
1322694000.0
그러나 아마도 다른 TZ에있을 때 내 결과와 다른 결과를 관찰하십시오 (결과는 시간대가없는 UNIX 타임 스탬프입니다)
입력 날짜가 이미 UTC 인 경우 올바른 해결책은 다음과 같습니다.
>>> calendar.timegm(time.strptime('01/12/2011', '%d/%m/%Y'))
1322697600
답변
간단히 사용하십시오 datetime.datetime.strptime
:
import datetime
stime = "01/12/2011"
print(datetime.datetime.strptime(stime, "%d/%m/%Y").timestamp())
결과:
1322697600
현지 시간대 대신 UTC를 사용하려면 다음을 사용하십시오 .replace
.
datetime.datetime.strptime(stime, "%d/%m/%Y").replace(tzinfo=datetime.timezone.utc).timestamp()