[python] 파이썬에서 문자열 날짜를 타임 스탬프로 변환

형식의 문자열 "%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


답변

나는 ciso8601datetime의 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()


답변

먼저 문자열을 struct_time 형식으로 변환 하려면 strptime 클래스가 있어야 합니다.

그런 다음 mktime 을 사용 하여 플로트를 얻으십시오.