strftime을 사용하여 Python datetime을 epoch로 변환
에포크 이후 초 수를 원하는 UTC 시간이 있습니다.
strftime을 사용하여 초 수로 변환하고 있습니다. 2012 년 4 월 1 일을 예로 들어 보겠습니다.
>>>datetime.datetime(2012,04,01,0,0).strftime('%s')
'1333234800'
epoch의 UTC는 1333238400이지만 1 시간마다 다른 1333234800을 반환합니다.
따라서 strftime이 시스템 시간을 고려하여 시간대 이동을 어딘가에 적용하는 것처럼 보입니다. 나는 날짜 시간이 순전히 순진하다고 생각 했습니까?
그 문제를 어떻게 해결할 수 있습니까? 가능한 경우 표준이 아닌 경우 다른 라이브러리를 가져 오지 마십시오. (이동성 문제가 있습니다).
에포크 이후로 파이썬 날짜 시간을 초로 변환하려면 명시 적으로 수행 할 수 있습니다.
>>> (datetime.datetime(2012,04,01,0,0) - datetime.datetime(1970,1,1)).total_seconds()
1333238400.0
Python 3.3 이상에서는 timestamp()
대신 사용할 수 있습니다 .
>>> datetime.datetime(2012,4,1,0,0).timestamp()
1333234800.0
왜 사용하지 않아야 하는가 datetime.strftime('%s')
파이썬은 실제로 % s를 strftime에 대한 인수로 지원하지 않습니다 ( http://docs.python.org/library/datetime.html#strftime-and-strptime-behavior 에서 확인 하면 목록에 없음) 그것이 작동하는 이유는 파이썬이 현지 시간대를 사용하는 시스템의 strftime에 정보를 전달하기 때문입니다.
>>> datetime.datetime(2012,04,01,0,0).strftime('%s')
'1333234800'
시간대 등에 심각한 문제가있었습니다. 파이썬이 혼란스러워하는 모든 것을 처리하는 방식은 나에게 혼란 스럽습니다. 캘린더 모듈을 사용하면 문제가없는 것 같습니다 (링크 1 , 2 , 3 및 4 참조 ).
>>> import datetime
>>> import calendar
>>> aprilFirst=datetime.datetime(2012, 04, 01, 0, 0)
>>> calendar.timegm(aprilFirst.timetuple())
1333238400
import time
from datetime import datetime
now = datetime.now()
time.mktime(now.timetuple())
import time
from datetime import datetime
now = datetime.now()
# same as above except keeps microseconds
time.mktime(now.timetuple()) + now.microsecond * 1e-6
(죄송합니다, 기존 답변에 대해서는 언급하지 않습니다)
유닉스 / 에포크 시간으로 타임 스탬프가 필요하면이 한 줄이 작동합니다.
created_timestamp = int((datetime.datetime.now() - datetime.datetime(1970,1,1)).total_seconds())
>>> created_timestamp
1522942073L
datetime
python2 및 python3의 작품 에만 의존합니다.
이것은 Python 2와 3에서 작동합니다.
>>> import time
>>> import calendar
>>> calendar.timegm(time.gmtime())
1504917998
공식 문서를 따르면 ... https://docs.python.org/2/library/time.html#module-time
명시 적 시간대 독립적 솔루션의 경우 pytz 라이브러리를 사용하십시오.
import datetime
import pytz
pytz.utc.localize(datetime.datetime(2012,4,1,0,0), is_dst=False).timestamp()
출력 (부동) : 1333238400.0
파이썬 3.7에서
date.isoformat () 및 datetime.isoformat ()에서 생성 된 형식 중 하나로 date_string에 해당하는 날짜 시간을 반환합니다. 특히이 함수는 YYYY-MM-DD [* HH [: MM [: SS [.fff [fff]]]] [+ HH : MM [: SS [.ffffff]]] 형식의 문자열을 지원합니다. 여기서 *는 모든 단일 문자와 일치 할 수 있습니다.
https://docs.python.org/3/library/datetime.html#datetime.datetime.fromisoformat
참고 URL : https://stackoverflow.com/questions/11743019/convert-python-datetime-to-epoch-with-strftime
'Programming' 카테고리의 다른 글
Microsoft.Jet.OLEDB.4.0 '공급자가 로컬 컴퓨터에 등록되어 있지 않습니다 (0) | 2020.05.17 |
---|---|
Python에서 Pearson 상관 관계 및 의미 계산 (0) | 2020.05.17 |
부트 스트랩 모달에서 특정 필드의 포커스를 설정하는 방법 (0) | 2020.05.17 |
클릭시 버튼 주위의 초점을 제거하는 방법 (0) | 2020.05.17 |
Visual C ++에서 콘솔 창을 열어 두는 방법은 무엇입니까? (0) | 2020.05.17 |