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
FYI โครงการJoda-Timeขณะนี้อยู่ในโหมดบำรุงรักษาโดยทีมงานให้คำแนะนำการย้ายถิ่นไปยังคลาสjava.time
เทียบเท่า Joda เวลาคือDateTimeZonedDateTime
ZoneId z = ZoneId.of( "Pacific/Auckland" ) ;
ZonedDateTime now = ZonedDateTime.now( z ) ;
เห็นได้ชัดว่าคุณต้องการที่จะนับวันตามวันที่หมายถึงคุณต้องการที่จะไม่สนใจเวลาของวัน ตัวอย่างเช่นการเริ่มต้นหนึ่งนาทีก่อนเที่ยงคืนและสิ้นสุดหนึ่งนาทีหลังเที่ยงคืนควรทำให้เกิดวันเดียว สำหรับพฤติกรรมนี้แยกจากLocalDate ชั้นหมายถึงค่าวันเท่านั้นโดยไม่ต้องเวลาของวันและไม่มีโซนเวลาZonedDateTimeLocalDate
LocalDate localDateStart = zdtStart.toLocalDate() ;
LocalDate localDateStop = zdtStop.toLocalDate() ;
ใช้ChronoUnitenum เพื่อคำนวณวันที่ผ่านไปหรือหน่วยอื่น ๆ
long days = ChronoUnit.DAYS.between( localDateStart , localDateStop ) ;
ตัด
สำหรับคุณที่ถามเกี่ยวกับวิธีการทั่วไปในการนับจำนวนนี้มากขึ้นโดยที่คุณสนใจเดลต้าชั่วโมงเป็นชั่วโมงต่อชั่วโมงแทนที่จะเป็นชั่วโมงที่สมบูรณ์ในช่วงเวลาหกสิบนาทีให้ใช้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กรอบถูกสร้างขึ้นใน Java 8 และต่อมา ชั้นเรียนเหล่านี้แย่งลำบากเก่ามรดกเรียนวันที่เวลาเช่นjava.util.Date, และCalendarSimpleDateFormat
Joda เวลาโครงการขณะนี้อยู่ในโหมดการบำรุงรักษาให้คำแนะนำแก่การโยกย้ายไปยังjava.timeชั้นเรียน
ต้องการเรียนรู้เพิ่มเติมโปรดดูที่ออราเคิลกวดวิชา และค้นหา Stack Overflow สำหรับตัวอย่างและคำอธิบายมากมาย สเปกJSR 310
คุณสามารถแลกเปลี่ยนวัตถุjava.timeโดยตรงกับฐานข้อมูลของคุณ ใช้ไดรเวอร์ JDBC ที่สอดคล้องกับJDBC 4.2หรือใหม่กว่า ไม่จำเป็นต้องใช้สตริงไม่จำเป็นต้องมีjava.sql.*คลาส
จะรับคลาส java.time ได้ที่ไหน? 
โครงการThreeTen-Extraขยาย java.time ด้วยคลาสเพิ่มเติม โครงการนี้เป็นพื้นฐานที่พิสูจน์ได้สำหรับการเพิ่มเติมในอนาคตไปยัง java.time คุณอาจพบว่าการเรียนที่มีประโยชน์บางอย่างที่นี่เช่นInterval, YearWeek, YearQuarterและอื่น ๆ อีกมากมาย
โครงการThreeTen-Extraขยาย java.time ด้วยคลาสเพิ่มเติม โครงการนี้เป็นพื้นฐานที่พิสูจน์ได้สำหรับการเพิ่มเติมในอนาคตไปยัง java.time คุณอาจพบว่าการเรียนที่มีประโยชน์บางอย่างที่นี่เช่นInterval, YearWeek, YearQuarterและอื่น ๆ อีกมากมาย
               
              
Days.daysBetweenไม่ถูกต้องได้หรือไม่?