2013-12-10 4 views
0

두 시간 값 중 하나가 시스템을 사용하여 가져온 경우 두 시간 값의 차이를 찾아야합니다. currentTimeMillis() 즉 the difference, measured in milliseconds, between the current time and midnight, January 1, 1970 UTC이고 다른 하나는 current value of the running Java Virtual Machine's high-resolution time source, in nanoseconds을 의미하는 System.nanoTime()을 사용하여 가져옵니다.에포크와 현재 시간의 시간차 찾기

어떻게하면됩니까?

+1

빼기? 나는 당신의 질문을 이해하지 못합니다. –

+0

숫자입니다. 숫자를 뺍니다. –

+0

왜 빼기? –

답변

4

이것은 불가능합니다. 당신은 나노 시간과 그 목적에 대한 오해가 있습니다. the documentation 가입일

는 :

이 방법은 시간의 경과를 측정하는데 사용되는 시스템 또는 벽시계 시간의 다른 개념에 관련된 없다 할 수있다. 값은 일부 고정되었지만 임의의 시간 이후로 나노초를 나타냅니다. (아마도 미래에는 값이 음수 일 수 있습니다.) 이 방법 은 나노초 정밀도를 제공하지만, 반드시 나노초 정확도 인 정확도를 제공하지는 않습니다. 값 변경 빈도에 대한 보장은 없습니다. 약 292 년 (2 나노 세컨드)을 넘는 연속 호출의 차이는 숫자 오버플로로 인해 경과 시간 을 정확하게 계산하지 않습니다.

+1

복사 앤 페이스트 문제 ... "263 나노초"는 "2^63 나노초"여야합니다. – dcsohl

+0

@ T.J.Crowder - 감사합니다. 6 자 미만으로 편집 할 수 없으므로 '^'을 추가 할 수 없으며, 위 첨자에 서식 지정 방법이 무엇인지 알 수 없습니다. – dcsohl

+1

@dcsohl : '':-) –

1

비교할 수 없습니다. 그것들은 사과와 오렌지이며, 동일한 척도 또는 동일한 시점과 관련하여 측정되지 않습니다. 특히 currentTimeMillis()은 1/1/1970 00 : 00 : 00Z부터 밀리 초이지만, nanoTime()은 ... 측정 된 시간은 컴퓨터 또는 JVM 등의 시작 시간 일 수 있습니다.

두 메서드를 동시에 호출하고 상관 관계를 기록한 경우 나중에 유사한 상관 관계를 수행 할 수 있지만이를 수행하는 유일한 방법이며 정확하다고 보장 할 수는 없습니다.