2012-03-10 3 views
1

일부 에포크 타임 스탬프를 실제 날짜로 변환해야하고 스택 오버 플로우에서 발견 된 몇 가지 메소드를 사용했지만 잘못된 대답을 제공합니다. 예를 들어Java - Unix epoch 시간을 변환하십시오.

이 한 날짜는 시대 시간에 "129732384262470907"입니다 "1월 20일 (월) 6081 그리니치 표준시 05시 24분 22초"http://www.epochconverter.com/

그러나 사용이, 내 코드 생성 : "수요일 12월 24일 (14) : 54 : 05 CST 19179225 "초기 타임 스탬프의 예에 내가 내가 내가 1000을 곱하지 않을 경우 1000

곱하기로하고 여기 보았다 밀리 초,에

String epochString = token.substring(0, comma); 
    long epoch = Long.parseLong(epochString); 
    Date logdate = new Date(epoch * 1000); 
    BufferedWriter timewrite = new BufferedWriter(new FileWriter(tempfile, true)); 
    timewrite.write(logdate); 
    timewrite.flush(); 
    timewrite.close(); 

, 나는 도착 : "Mon Aug 08 01:14:30 CDT 4113025"

두 가지 모두 잘못되었습니다.

그럼 내 오류는 어디에서 발생 했습니까? 6081로 의미 않다면

답변

2

129732384262470907은 시대 이후 마이크로 실제로, 그래서 그 실제 입력의 경우는 1000 분할해야합니다. 그것은 단지 당신이 다음 밀리 초 시대 이후로 취급 129732384262470를 입력 할 수 있습니다 - epochconverter.com도 그 값을 처리하지 않습니다

참고.

신기원 이후 데이터가 초인 인 경우 1000을 곱해야합니다. 기본적으로 자바는 신기원 이래로 밀리 세컨드를 기대한다는 것을 알아야합니다. 나머지는 당신이 당신의 입력 데이터가 실제로 무엇을 의미하는지 알고 있다고 가정 할 때 명백한 항해가되어야합니다.

데이터와 그 의미를 나타내려면 문제를 쉽게 해결할 수 있습니다.

+0

그리고 당신은 최고입니다 !! –

+0

epochconveter.com에 대한 정보를 보내 주셔서 감사합니다. 그리고 아래 두 줄의 답변에서 볼 수 있듯이, 나는 그것을 알아낼 수있었습니다. –

0

신중하게 보면 epochconverter.com은 입력 필드에 너무 길었 기 때문에 해당 숫자를 잘 렸습니다.

System.currentMillis()의 현재 값을 인쇄하여 "현재"에포크 기반 타임 스탬프의 대략적인 범위를 확인하고 일치하도록 입력 번호를 다시 조정하는 것이 좋습니다.

실제로 보면, 10,000으로 나눈 값이 1297323842624가되어 2011 년에 날짜가 나옵니다. 따라서 어떤 단위가 나올지 확실하지 않습니다. 당신이 부여한 번호는 안으로 있습니다.

+0

그리고 너는 대단해 !! 그 하나의 변화가 제대로 작동하게 만들었습니다. 다시 한 번 감사드립니다. epochconverter.com이 잘못된 값을주고있는 것이 맞습니다. "Sun Jan 19 23:24:22 CST 6081" –

+0

정말요? 6081 년을 기대하고 있니? – dty

+0

물론 나는 시간 여행자입니다. 6081로 돌아 가면 사용할 수있는 원시 시스템이 매우 실망 스럽습니다. [/ joke] 죄송합니다. 잘못된 것을 붙여 넣었습니다. 올바른 것은 다음과 같습니다. "Thu Feb 10 01:44:02 CST 2011"10 만분의 1로 나누어야했습니다. –

관련 문제