2016-12-06 4 views
-10

새로운 Java 8 DateTime API (java.time)를 사용하여 "마지막"캡처 시간이 오래되었는지, 구성된 초 집합인지를 어떻게 확인할 수 있습니까?Java 8 시간이 X 초보다 오래된 경우 확인하는 날짜?

예 ...

마지막 촬영 시간 : 13시 0분 0초 현재 시간 시간 : 그것이 13시 0분 31초

if (last captured time is older then 30 seconds) then 
    do something 
+9

(http://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html) 때 너 연구 조사를 했니? –

+0

예, 지금 당장보고 있습니다. 나는 듀레이션을 사용하고 그것으로부터 계산할 수 있다고 생각하고 있습니까? – user432024

+5

@ user432024 적어도 시도해야한다고 생각합니다. – DejaVuSansMono

답변

3

Instant 클래스는 나노초 단위의 분해능으로 타임 라인에서 UTC의 순간을 나타냅니다. Duration

Instant then = … ; 
Instant now = Instant.now(); 

는 초 nanoseconds 환산 시간 범위를 나타낸다.

Duration d = Duration.between(then , now); 

전체 초 수를 추출하십시오.

long secondsElapsed = d.getSeconds() ; 

한도와 비교하십시오. "마법"번호를 하드 코딩하는 대신 변환하려면 TimeUnit enum을 사용하십시오. 예를 들어, 5 분을 초 단위로 변환합니다.

long limit = TimeUnit.MINUTES.toSeconds(5); 

과 비교하십시오. 당신이 [`java.time` 패키지]에서 발견 했는가

if(secondsElapsed > limit) { … } 
0

기간 ...

Duration duration = Duration.between(LocalDateTime.now(), LocalDateTime.now().plusSeconds(xx)); 
System.out.println(duration.getSeconds()); 
+2

'Local ...'클래스는 의도적으로 모든 시간대와 UTC 오프셋 정보를 잃어 버립니다. 그래서 여기는 잘못된 수업입니다. ** 일종의 DST (Daylight Saving Time) 컷 오버 (cut-over) 또는 기타 이와 같은 예외 상황에서 실행하면 ** 이러한 종류의 코드가 실패합니다. –

+0

그 경우에 나는 너의 것을 받아 들일 것이다 ... – user432024