tl; dr
java.time.temporal.ChronoUnit.DAYS.between(
earlier.toLocalDate(),
later.toLocalDate()
)
…또는…
java.time.temporal.ChronoUnit.HOURS.between(
earlier.truncatedTo( ChronoUnit.HOURS ) ,
later.truncatedTo( ChronoUnit.HOURS )
)
java.time
참고로 Joda-Time 프로젝트는 이제 유지 관리 모드 에 있으며 팀은 java.time 클래스 로의 마이그레이션을 조언합니다 .
Joda 타임의 상당 DateTime
하다 ZonedDateTime
.
ZoneId z = ZoneId.of( "Pacific/Auckland" ) ;
ZonedDateTime now = ZonedDateTime.now( z ) ;
분명히 날짜로 날짜를 계산하려고합니다. 즉, 시간을 무시하고 싶습니다. 예를 들어 자정 전 1 분을 시작하고 자정 후 1 분을 끝내면 하루가됩니다. 이 동작을하려면에서을 추출 LocalDate
하십시오 ZonedDateTime
. 이 LocalDate
클래스는 시간이없고 시간대가없는 날짜 전용 값을 나타냅니다.
LocalDate localDateStart = zdtStart.toLocalDate() ;
LocalDate localDateStop = zdtStop.toLocalDate() ;
ChronoUnit
열거 형을 사용하여 경과 일수 또는 다른 단위를 계산 하십시오 .
long days = ChronoUnit.DAYS.between( localDateStart , localDateStop ) ;
자르기
60 분의 시간 범위로서 완전한 시간이 아니라 시간의 시간에 따른 시간의 델타에 관심이있는 경우이 계산을 수행하는보다 일반적인 방법에 대해 문의하려면이 truncatedTo
방법을 사용하십시오 .
다음은 같은 날 14:45 ~ 15:12의 예입니다.
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime start = ZonedDateTime.of( 2017 , 1 , 17 , 14 , 45 , 0 , 0 , z );
ZonedDateTime stop = ZonedDateTime.of( 2017 , 1 , 17 , 15 , 12 , 0 , 0 , z );
long hours = ChronoUnit.HOURS.between( start.truncatedTo( ChronoUnit.HOURS ) , stop.truncatedTo( ChronoUnit.HOURS ) );
1
며칠 동안 작동하지 않습니다. 이 경우 toLocalDate ()를 사용하십시오.
java.time에 대하여
java.time의 프레임 워크는 나중에 자바 8에 내장되어 있습니다. 이 클래스는 까다로운 기존에 대신 기존 과 같은 날짜 - 시간의 수업을 java.util.Date
, Calendar
, SimpleDateFormat
.
Joda 타임 프로젝트는 지금에 유지 관리 모드 의로 마이그레이션을 조언 java.time의 클래스.
자세한 내용은 Oracle Tutorial을 참조하십시오 . 많은 예제와 설명을 보려면 스택 오버플로를 검색하십시오. 사양은 JSR 310 입니다.
java.time 객체를 데이터베이스와 직접 교환 할 수 있습니다 . JDBC 4.2 이상을 준수 하는 JDBC 드라이버를 사용하십시오 . 문자열이 필요없고 수업이 필요 없습니다 .java.sql.*
java.time 클래스는 어디서 구할 수 있습니까?
ThreeTen - 추가 프로젝트 추가 클래스와 java.time를 확장합니다. 이 프로젝트는 향후 java.time에 추가 될 수있는 입증 된 근거입니다. 당신은 여기에 몇 가지 유용한 클래스와 같은 찾을 수 있습니다 Interval
, YearWeek
, YearQuarter
, 그리고 더 .
ThreeTen - 추가 프로젝트 추가 클래스와 java.time를 확장합니다. 이 프로젝트는 향후 java.time에 추가 될 수있는 입증 된 근거입니다. 당신은 여기에 몇 가지 유용한 클래스와 같은 찾을 수 있습니다 Interval
, YearWeek
, YearQuarter
, 그리고 더 .
Days.daysBetween
부정확 하다고 생각되는 특정 데이터를 사용하여 사례를 제공 할 수 있습니까 ?