tl; डॉ
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 करें, जोडा-टाइम परियोजना अब रखरखाव मोड में है , जिसमें टीम java.time कक्षाओं में प्रवास की सलाह दे रही है ।
जोडा-टाइम के बराबर DateTime
है ZonedDateTime
।
ZoneId z = ZoneId.of( "Pacific/Auckland" ) ;
ZonedDateTime now = ZonedDateTime.now( z ) ;
जाहिरा तौर पर आप तारीखों से दिनों की गिनती करना चाहते हैं, जिसका अर्थ है कि आप दिन के समय को अनदेखा करना चाहते हैं। उदाहरण के लिए, आधी रात से एक मिनट पहले शुरू करना और आधी रात के बाद एक मिनट के बाद एक दिन में परिणाम आना चाहिए। इस व्यवहार के लिए, LocalDate
अपने से निकालें ZonedDateTime
। LocalDate
वर्ग समय के दिन और समय क्षेत्र के बिना बिना एक दिनांक-केवल मूल्य का प्रतिनिधित्व करता।
LocalDate localDateStart = zdtStart.toLocalDate() ;
LocalDate localDateStop = zdtStop.toLocalDate() ;
ChronoUnit
बीते दिनों या अन्य इकाइयों की गणना करने के लिए एनम का उपयोग करें ।
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 ढांचे जावा 8 और बाद में बनाया गया है। इन कक्षाओं परेशानी वर्ष प्रतिस्थापित विरासत जैसे तिथि-समय कक्षाएं java.util.Date
, Calendar
, और SimpleDateFormat
।
अब जोडा-टाइम परियोजना, रखरखाव मोड में , java.time कक्षाओं में प्रवासन की सलाह देती है ।
अधिक जानने के लिए, Oracle ट्यूटोरियल देखें । और कई उदाहरणों और स्पष्टीकरणों के लिए ढेर अतिप्रवाह खोजें। विशिष्टता 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
है कि गलत है?