2012-11-02 6 views
4

개체를 만들 때 내 엔티티 중 하나에서 private Timestamp timestamp = new Timestamp(System.nanoTime());을 사용하고 있습니다. 내가 타임 스탬프를 System.out을 경우nanoTime의 System.out이 올바르지 않습니까?

, 나는 값이 좋아지고있어;

2282-08-24 11:25:00.506 
2286-04-16 01:47:35.882 

무엇이 잘못 되었나요?

System.currentTimeMillis()는 정확한 날짜를 제공하지만, 좀 더 정확성을 필요로한다. 무엇이 잘못 될 수 있습니까 ??

+2

아무것도에 있기 때문에이 이유입니다, 그냥 작동 : http://docs.oracle.com/javase/6/docs/api/java/sql/Timestamp.html# Timestamp (long) – home

+4

System.currentTimeMillis(), System.nanoTime() 및 Timestamp 생성자에 대한 설명서를 읽지 않으셨습니까? 이 질문을 적어 두었던 짧은 시간에 질문에 대답 했어야합니다. – jarnbjo

+0

참조 [이] (http://stackoverflow.com/a/11599287/1504523) 답변에 대한 간단한 개요를 얻을'에 System.currentTimeMillis()'와'System.nanoTime()'. – Arno

답변

9

System.nanoTime()는 컴퓨터가 시작된 이후 CPU 사이클의 수를 함께 할 수있는 뭔가가, 시간을 측정하는 완전히 추상적 인 방법입니다. 이 시간 (1970 년 이후의 밀리 초 수)을 사용하는 java.util.Date과 완전히 관련이 없습니다.

System.nanoTime()의 두 값을 자유롭게 비교하여 (이론적으로 최대 1 나노초) 매우 정확한 시간 측정을 얻을 수 있지만 절대 값은 쓸모가 없습니다.

+0

나는 이것을 알지 못했다! 어쨌든 millis보다 정확도가 좋은 날짜를 만드는 대안이 있습니까? – membersound

+0

@membersound "* 클래스 'Date' (http://docs.oracle.com/javase/7/docs/api/java/util/Date.html) (강조 광산)'에 Date'의 JavaDoc] ** 밀리 초 정밀도 **로 특정 순간을 나타냅니다. downvoter, 설명 신경? –

1

이 방법은 경과 시간을 측정하는 데만 사용할 수 있으며 시스템 또는 벽시계 시간의 다른 개념과는 관련이 없습니다. 돌려 주어지는 값은, 고정이지만 임의의 원점 시각으로부터의 나노초를 나타냅니다 (아마 장래는 값이 부의 경우가 있기 (위해) 때문에). Java 가상 머신의 인스턴스 내에서,이 메소드의 모든 호출에 의해 같은 원점이 사용됩니다. 다른 가상 머신 인스턴스는 다른 출처를 사용하게됩니다.

documentation

0

소인 새로운 타임 스탬프 (밀리 초)을 기대한다. nanoseconds (새로운 Timestamp (nanoseconds) ---> 1000 배)보다 큰 값을 주면 미래에 1000 배의 타임 스탬프를 얻을 수 있습니다. 지정된 얻어진 날짜는 올해 2282

관련 문제