2014-11-26 8 views
1

1416990366 타임 스탬프로 변환하고 싶습니다.자바 타임 스탬프, 올바른 값을 얻을 수 없습니다.

Timestamp stamp = new Timestamp(1416990366); 
    System.out.println("TimeStamp: " + stamp.toString()); 
    Date mDate = new Date(stamp.getTime()); 

을하지만 Wed, 26 Nov 2014 08:26:06 GMT 잘못된 것입니다해야합니다 동안이 Sat Jan 17 13:06:30 GMT+03:30 1970를 얻을 : 여기 내가 어떻게 무엇입니까?

편집 :

내가 서버에서이 값을 얻을 내가 1000을 곱해야하지만 다시 잘못된 값을 아무것도 얻을 수없고, 그래서 그들이 밀리 초를 잘라 생각합니다. 이것이 여전히 작동하지 않는 이유 Timestamp stamp = new Timestamp(1000 * mIssue.getReleaseTime());mIssue.getReleaseTime() = 1416990366 아무도 도와 줄 수 있습니까?

답변

2

Timestamp 생성자에 지정된 시간은 1970 년 1 월 1 일 00:00:00 GMT 이후의 시간 (밀리 초)입니다. 1416990366 그 신기원으로부터 약 16 일, 따라서 당신이 얻는 결과를 평가합니다.

현재 시간을 원하면 System.currentTimeMillis()을 생성자에 전달할 수 있습니다.

편집 :가 서버에서 얻을 시간이 밀리 초 단위이기 때문에, 당신은 1000 증식 할 수 있으며 다음과 같이 long로 변환 :

Timestamp stamp = new Timestamp((long) 1000 * mIssue.getReleaseTime()); 
+0

도움을 주셔서 감사합니다. 서버에서이 값을 얻었고 1000 밀리 초를 버리므로 1000을 곱해야한다고 생각합니다.하지만 다시는 잘못된 값을 얻습니다. – mmlooloo

+0

이것이 여전히 작동하지 않는 이유'Timestamp stamp = new Timestamp (1000 * mIssue.getReleaseTime()); 여기서'mIssue.getReleaseTime() = 1416990366' – mmlooloo

+0

이것이 해결되면 System.out.println (new Date (0)));'인쇄 Thu Jan 01 ** 02 : 00 : 00 ** EET 1970! – Eypros

1

java.time을

현대에게 방법은 java.time 클래스를 사용하는 것입니다.

Instant instant = Instant.ofEpochSecond(1416990366L); 

전화 toString 표준 ISO 8601 형식의 날짜 - 시간 값을 나타내는 문자열을 생성합니다.

2014-11-26T08 : 26 :

Instant 06Z

nanoseconds의 해상도를 가진 UTC의 타임 라인에 순간이다. java.time 기능의 대부분

ThreeTen-Backport는 자바 6 & 7 백 포팅 또한 ( How to use… 참조)에 ThreeTenABP Android하도록 구성된다.

+0

고마워요.하지만 안드로이드는 여전히 자바 7을 사용합니다. – mmlooloo

+1

@mmlooloo ThreeTenABP 프로젝트에 추가 한 마지막 단락을보십시오. –

+0

새 라이브러리를 소개해 주셔서 감사합니다. 실제로 제 경우에는 새 라이브러리를 추가하면 메소드 수가 증가하고 apk의 바이너리 크기가 늘어납니다. 그렇기 때문에 무거운 시간 API가 필요하지 않으면 오래된 코딩 스타일을 사용하는 것이 좋습니다. 다시 고마워 .-) – mmlooloo