밀리 초에서 파이썬으로 날짜 시간을 어떻게 만듭니 까?


142

java.util.Date (milliseconds)에 의해 Java에서 유사한 Date 객체를 만들 수 있습니다 . 파이썬에서 필적하는 것을 어떻게 만듭니 까?

Date 객체를 할당하고 "epoch"라고 알려진 표준 기본 시간 이후 1970 년 1 월 1 일 00:00:00 GMT 이후 지정된 밀리 초 수를 나타내도록 초기화합니다.

답변:


215

타임 스탬프로 변환하기 만하면됩니다.

datetime.datetime.fromtimestamp(ms/1000.0)

17
참고 사항-Python 3에서 (/)는 부동 소수점 나누기를 수행합니다. 적분을 수행하려면 (//)를 사용하십시오.
John Millikin

3
어쨌든 실제로 float 나누기를 원하지 않습니까? 그렇지 않으면 타임 스탬프의 소수 부분에서 유지되는 1 초 미만의 정밀도가 손실됩니다. 잘리지 않고 ms / 1000.0을 사용하는 것이 좋습니다.
Brian

4
확실히 datetime은 항상 그것을 지원합니까? 만약 우리가 1 초 미만의 정밀도를 가지고 있다면 그것을 버리는 것은 잘못된 것 같습니다. 우리가 해를 끼치 지 않으면 원래의 정밀도를 유지합니다.
Brian

30
float를 사용하지 않고 정밀도를 유지하려면 다음을 수행하십시오.datetime.utcfromtimestamp(ms//1000).replace(microsecond=ms%1000*1000)
tsg

2
이 솔루션의 또 다른 문제점 : "타임 스탬프가 플랫폼 C localtime () 또는 gmtime () 함수가 지원하는 값 범위를 벗어나면 fromfromtimestamp ()가 ValueError를 발생시킬 수 있습니다. 1970 년에서 수년으로 제한되는 것이 일반적입니다. 2038. " -코드 지속 시간은 얼마입니까 ???
마이크 설치류

12

이건 어때? 1970 년 이전과 2038 년 이후의 날짜를 처리 할 수 ​​있다고 가정합니다.

target_date_time_ms = 200000 # or whatever
base_datetime = datetime.datetime( 1970, 1, 1 )
delta = datetime.timedelta( 0, 0, 0, target_date_time_ms )
target_date = base_datetime + delta

파이썬 표준 라이브러리에서 언급했듯이 :

타임 스탬프가 플랫폼 C localtime () 또는 gmtime () 함수에서 지원하는 값 범위를 벗어나면 fromtimestamp ()가 ValueError를 발생시킬 수 있습니다. 1970 년에서 2038 년으로 제한되는 것이 일반적입니다.


6
당신은 사용할 수 있습니다utc_time = datetime(1970, 1, 1) + timedelta(milliseconds=millis)
jfs

9

팬더를 사용하기 때문에 조금 무겁지 만 작동합니다.

import pandas as pd
pd.to_datetime(msec_from_java, unit='ms').to_pydatetime()

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.