2012-03-16 2 views
106

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

어떻게이 숫자를 datetime으로 변환합니까?

답변

193

datetime.datetime.fromtimestamp()이 정확한지 아닌지 (JavaScript와 같이) 밀리 초 단위의 시간 소인이있는 경우는 제외하고 fromtimestamp()은 유닉스 시간 스탬프 (초)를 요구합니다.

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

그 결과는 다음과 같습니다 :

는 그런 식으로 작업을 수행

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

그것은 귀하의 질문에 대답합니까?

편집 : J.F. 세바스찬 제대로 (1000 플로트) 1e3에 의해 사용 사실 부문에 제안했다. 차이점은 중요합니다. 정확한 결과를 얻고 싶다면 내 답변을 변경했습니다. 나눈 항상 intint 작성자 (/ 연산자를 사용)를 반환 int 파이썬 2.X의 기본 동작과의 차이의 결과는 (이 층을 분할불린다). 1e3 제수 (float로서 1000의 표현 인) 또는 float(1000) (또는 1000. 등) 제수 1000 (AN int 인)를 대체함으로써, 분단 진정한 분할된다. float 등을 fromtimestamp() 메서드에 전달 된 타임 스탬프의 일부 소수 부분이있을 때,이 방법의 결과도 수와 그 소수 부분에 대한 정보를 (포함하여 int에 의해 float에 의해 int, float, float을 분할 할 때 파이썬 2.X는 float을 반환 마이크로 초).

+6

사실 분할을 사용하십시오 :/1e3' – jfs

+0

@ J.F.Sebastian : 당신은 완전히 맞습니다. 제 대답을 편집하고 왜 당신이 옳은지 설명을 추가했습니다. 설명에 동의하지 않으면 알려주십시오. – Tadeck

+3

x/1e3 대신 x * 0.001을 쓰는 것이 더 명확합니다. –

관련 문제