2014-06-12 5 views
1

JSON 객체를받는 Rest Service가 있습니다. 이 JSON에는 타임 스탬프 값이 있습니다. JSON 객체를 Java 클래스로 변환 할 때 타임 스탬프에 대해 긴 변수 (나중에 적절한 객체를 얻기 위해 new Date(long)과 함께 사용)를 사용합니다. 클라이언트 (Java 및 JS에서)가 타임 스탬프를 오랫동안 보내면서 모든 것이 올바르게 작동했습니다.부동 소수점 타임 스탬프를 Python에서 Java의 날짜로 변환

이제 파이썬 클라이언트를 서비스에 추가하고 파이썬에서 오랫동안 타임 스탬프를 보내려고합니다. 그러나 파이썬의 time.time() 메서드는 항상 부동 소수점 숫자를 제공합니다. 그래서 나는 Rest Service의 Java 클래스에서 double 변수를 사용하기로 결정했고 올바르게 타임 스탬프를 얻고 있습니다. 그렇다면 이것을 어떻게 Date 개체로 변환 할 것인가? 어떤 아이디어?

답변

4

그래서 Java Date 객체가 생성자에 milliseconds from the epoch을 원할 때 time.time() 메소드 returns seconds since the epoch처럼 보이는 문서를보고 (전에는 Python을 사용한 적이 없었습니다).

그래서 두 배를 길게하려면 멋진 수학을해야합니다. 필자가 읽은 파이썬 문서에서 파이썬 코드로 초를 밀리 초 단위로 변환하고 그 결과를 나머지 서비스에 오랫동안 보내는 것이 더 쉬운 것처럼 보입니다. 얼마나 정확한지에 따라 time.time() 결과에 1000을 곱하여 밀리 초를 얻은 다음 나머지를 반올림하여 부동 소수점을 삭제할 수 있습니다.

+0

파이썬 코드에서 초를 밀리 초 단위로 변환하는 것이 더 쉬울 수 있지만 여전히 부동 소수점 숫자입니다. 'round (time.time() * 1000)'은 여전히 ​​float을 제공합니다. 내가 생각하고 자바 측에서 변환을 수행 할 수 있습니다. –

+0

결국 나는 이런 것을했습니다. 파이썬에서'time.time() * 1000'을 보냈습니다. 다른 double 변수로받은 다음, 이렇게 long으로 변환 한 후 날짜를 설정합니다.'long timestamp = (long) createdTimeInDouble' –

+0

다행스럽게도 다 끝났습니다! :) – BlakeP

관련 문제