>  기사  >  백엔드 개발  >  Python에서 `strftime(\'%s\')`가 부정확한 에포크 시간을 생성하는 이유는 무엇입니까?

Python에서 `strftime(\'%s\')`가 부정확한 에포크 시간을 생성하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-20 04:01:02236검색

Why Does `strftime('%s')` Produce Inaccurate Epoch Time in Python?

'strftime'을 사용하여 Python Datetime을 Epoch로 변환: 시간대 불일치 이해

Python에서 'strftime' 메서드는 일반적으로 datetime 객체를 특정 날짜 및 시간 형식을 나타내는 문자열입니다. 그러나 '%s'를 사용하여 에포크 시간으로 변환할 때 잠재적인 시간대 불일치를 인식하는 것이 중요합니다.

관찰한 것처럼 날짜/시간 객체에 'strftime('%s')'를 사용하면 다음과 같은 결과가 발생합니다. UTC 기준 실제 epoch 시간과 1시간 차이가 나는 값입니다. 이는 'strftime'이 기본적으로 시스템의 현지 시간대를 사용하므로 UTC와의 오프셋이 발생할 수 있기 때문입니다.

시스템 시간대 재정의

이 시간대 문제를 극복하려면 ' timestamp()' 메서드는 Python 3.3에서 도입되었습니다. 'timestamp()'는 시스템 시간대에 관계없이 에포크 시간을 초 단위로 직접 반환합니다.

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

Python 3.3 이전 버전의 경우 에포크 시간을 수동으로 계산할 수 있습니다.

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

Epoch 변환에 'strftime('%s')'을 사용하면 안되는 이유

중요합니다 Python은 본질적으로 이 형식을 지원하지 않으므로 epoch 변환에 'strftime('%s')'을 사용하지 마십시오. 그 기능은 시스템의 'strftime' 구현에 입력을 전달하는 데 달려 있는데, 이는 현지 시간대를 사용하고 오류가 발생할 수 있습니다.

결론적으로, Python 3.3에서 'timestamp()' 메서드를 사용하는 것이 좋습니다. UTC로 정확한 에포크 시간 변환을 얻기 위해 이전 버전에 대한 수동 계산. 이 관행을 준수하면 시스템의 시간대 구성에 관계없이 일관되고 안정적인 결과를 보장할 수 있습니다.

위 내용은 Python에서 `strftime(\'%s\')`가 부정확한 에포크 시간을 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.