복붙노트

[PYTHON] 정수 타임 스탬프를 Python datetime으로 변환하는 방법

PYTHON

정수 타임 스탬프를 Python datetime으로 변환하는 방법

"1331856000000"과 같은 타임 스탬프가 포함 된 데이터 파일이 있습니다. 불행히도 형식에 대한 많은 문서가 없으므로 타임 스탬프 형식이 어떻게 지정되었는지 잘 모르겠습니다. 나는 파이썬의 표준 datetime.fromordinal ()과 datetime.fromtimestamp ()와 몇 가지 다른 것들을 시도했지만, 일치하는 것은 없다. 특정 숫자가 현재 날짜 (예 : 2012-3-16)에 해당하지만 그다지 많지는 않습니다.

이 숫자를 datetime으로 변환하려면 어떻게해야합니까?

해결법

  1. ==============================

    1.datetime.datetime.fromtimestamp ()가 정확합니다 (JavaScript에서와 같이 밀리 초 단위의 시간 소인이있는 경우는 예외). 그러나 fromtimestamp ()는 Unix 시간 소인 (초)을 예상합니다.

    datetime.datetime.fromtimestamp ()가 정확합니다 (JavaScript에서와 같이 밀리 초 단위의 시간 소인이있는 경우는 예외). 그러나 fromtimestamp ()는 Unix 시간 소인 (초)을 예상합니다.

    그것을 좋아합니까 :

    >>> import datetime
    >>> your_timestamp = 1331856000000
    >>> date = datetime.datetime.fromtimestamp(your_timestamp / 1e3)
    

    결과는 다음과 같습니다.

    >>> date
    datetime.datetime(2012, 3, 16, 1, 0)
    

    그것은 당신의 질문에 대답합니까?

    편집 : J.F. Sebastian 올바르게 1e3 (플로트 1000)에 의해 진정한 나눗셈을 사용하는 것이 좋습니다. 차이점은 중요합니다. 정확한 결과를 얻고 싶다면 내 답변을 변경했습니다. 이 차이점은 Python 2.x의 기본 동작 (int / int)을 int로 나눌 때 항상 int를 반환하는 기본 동작 (이 것은 바닥 나누기라고 함)의 결과입니다. 제수 1000 (int 임)을 1e3 제수 (float로 1000 표현) 또는 float (1000) (1000. 등)로 대체하면 나눗셈이 실제 나눗셈이됩니다. 파이썬 2.x는 int를 float로 나눌 때 int를 float로 플로트하고 float로 float 등으로 float를 반환합니다. 그리고 fromtimestamp () 메소드에 전달 된 타임 스탬프에 분수 부분이있을 때이 메소드의 결과에는 해당 분수 부분에 대한 정보도 포함됩니다. 마이크로 초의 수).

  2. from https://stackoverflow.com/questions/9744775/how-to-convert-integer-timestamp-to-python-datetime by cc-by-sa and MIT license