programing

strftime을 사용하여 python datetime을 epoch로 변환합니다.

javaba 2022. 9. 30. 10:44
반응형

strftime을 사용하여 python datetime을 epoch로 변환합니다.

에폭 이후의 초수를 원하는 UTC 시간이 있습니다.

strftime을 사용하여 초수로 변환하고 있습니다.2012년 4월 1일을 예로 들어보자.

>>>datetime.datetime(2012,04,01,0,0).strftime('%s')
'1333234800'

에폭으로부터의 2012년 4월 1일의 UTC 는 1333238400 이지만, 상기의 1333234800 이 반환되어 1시간 차이가 납니다.

즉, 스트레이트 타임은 시스템 시간을 고려하여 어딘가에서 타임존 시프트를 적용하는 것 같습니다.순진한 줄 알았는데?

어떻게 하면 피할 수 있을까요?가능하면 표준이 아닌 이상 다른 라이브러리를 Import하지 마십시오.(휴대성이 걱정됩니다.)

python datetime을 epoch 이후 초수로 변환하려면 명시적으로 다음과 같이 하십시오.

>>> (datetime.datetime(2012,4,1,0,0) - datetime.datetime(1970,1,1)).total_seconds()
1333238400.0

Python 3.3+에서는 대신 다음을 사용할 수 있습니다.

>>> datetime.datetime(2012,4,1,0,0).timestamp()
1333234800.0

사용하지 않는 이유datetime.strftime('%s')

Python은 strftime에 대한 인수로서 %s를 실제로 지원하지 않습니다(http://docs.python.org/library/datetime.html#strftime-and-strptime-behavior에서 확인하면 목록에 없습니다). 유일한 이유는 Python이 사용자의 로컬 시간대를 사용하는 시스템의 strftime에 정보를 전달하기 때문입니다.

>>> datetime.datetime(2012,04,01,0,0).strftime('%s')
'1333234800'

나는 타임존 등에 심각한 문제가 있었다.Python이 이 모든 것을 처리하는 방법은 (나에게) 꽤 혼란스럽다.캘린더 모듈을 사용하면 정상적으로 동작하고 있는 것 같습니다(링크 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

(죄송합니다.기존 답변은 코멘트할 수 없습니다)

unix /timeout time 내의 타임스탬프만 필요한 경우 다음 행이 작동합니다.

created_timestamp = int((datetime.datetime.now() - datetime.datetime(1970,1,1)).total_seconds())
>>> created_timestamp
1522942073L

에 의존합니다.datetimepython2 및 python3에서 동작합니다.

명시적 시간대 독립 솔루션의 경우 pytz 라이브러리를 사용합니다.

import datetime
import pytz

pytz.utc.localize(datetime.datetime(2012,4,1,0,0), is_dst=False).timestamp()

출력(플로트): 1333238400.0

이것은 Python 2와 3에서 동작합니다.

>>> import time
>>> import calendar
>>> calendar.timegm(time.gmtime())
1504917998

공식 문서를 따라가면...https://docs.python.org/2/library/time.html#module-time

Python 3.7에서는

date.isoformat() 및 datetime.isoformat() 중 하나의 형식으로 date_string에 대응하는 datetime을 반환합니다.특히 이 함수는 YYY-MM-DD[*HH[:] 형식의 문자열을 지원합니다.MM[:SS[.ff[ff]]][+]HH : MM [ : SS [ . fffff ] 。* 는 임의의 단일 문자와 일치할 수 있습니다.

https://docs.python.org/3/library/datetime.html#datetime.datetime.fromisoformat

언급URL : https://stackoverflow.com/questions/11743019/convert-python-datetime-to-epoch-with-strftime

반응형