java.time
Habsq द्वारा उत्तर सही विचार लेकिन गलत तरीकों है।
एक स्पैन-ऑफ-टाइम के लिए समय-वर्ष-महीने-दिनों के पैमाने पर अनासक्त, उपयोग करें Period
। कैलेंडर और घंटे-मिनट-सेकंड के लिए असंबंधित समय के 24 घंटे के अर्थ का उपयोग करें Duration
। दो पैमानों को मिलाने से शायद ही कोई मतलब हो।
Duration
UTC में देखे गए वर्तमान क्षण को लाकर प्रारंभ करें , का उपयोग करते हुएInstant
कक्षा ।
Instant now = Instant.now(); // Capture the current moment as seen in UTC.
Instant then = now.minus( 8L , ChronoUnit.HOURS ).minus( 8L , ChronoUnit.MINUTES ).minus( 8L , ChronoUnit.SECONDS );
Duration d = Duration.between( then , now );
घंटे, मिनट और सेकंड के लिए पाठ उत्पन्न करें।
// Generate text by calling `to…Part` methods.
String output = d.toHoursPart() + " hours ago\n" + d.toMinutesPart() + " minutes ago\n" + d.toSecondsPart() + " seconds ago";
सांत्वना देना।
System.out.println( "From: " + then + " to: " + now );
System.out.println( output );
प्रेषक: 2019-06-04T11: 53: 55.714965Z से: 2019-06-04T20: 02: 03.714965Z
8 घंटे पहले
8 मिनट पहले
8 सेकंड पहले
Period
वर्तमान दिनांक प्राप्त करके प्रारंभ करें।
एक तिथि निर्धारित करने में एक समय क्षेत्र महत्वपूर्ण है। किसी भी क्षण के लिए, तिथि क्षेत्र के अनुसार दुनिया भर में भिन्न होती है। उदाहरण के लिए, पेरिस फ्रांस में मध्यरात्रि के कुछ मिनट बाद एक नया दिन है जबकि अभी भी "कल" मॉन्ट्रियल क्यूबेक में है ।
यदि कोई समय क्षेत्र निर्दिष्ट नहीं है, तो JVM अपने वर्तमान डिफ़ॉल्ट समय क्षेत्र को स्पष्ट रूप से लागू करता है। वह डिफ़ॉल्ट किसी भी समय बदल सकता हैरनटाइम (!) के दौरान , इसलिए आपके परिणाम भिन्न हो सकते हैं। एक तर्क के रूप में स्पष्ट रूप से अपने वांछित / अपेक्षित समय क्षेत्र को निर्दिष्ट करने के लिए बेहतर है। यदि महत्वपूर्ण है, तो अपने उपयोगकर्ता के साथ ज़ोन की पुष्टि करें।
के रूप में , या , के प्रारूप में एक उचित समय क्षेत्र नाम निर्दिष्ट करें । कभी इस तरह के रूप में 2-4 पत्र संक्षिप्त नाम का उपयोग या के रूप में वे कर रहे हैं नहीं सच समय क्षेत्र, नहीं मानकीकृत, और यहां तक कि अद्वितीय नहीं (!)।Continent/Region
America/Montreal
Africa/Casablanca
Pacific/Auckland
EST
IST
ZoneId z = ZoneId.of( "America/Montreal" ) ;
LocalDate today = LocalDate.now( z ) ;
आठ दिन, महीने और साल पहले की तारीख को फिर से बनाना।
LocalDate then = today.minusYears( 8 ).minusMonths( 8 ).minusDays( 7 ); // Notice the 7 days, not 8, because of granularity of months.
बीते हुए समय की गणना करें।
Period p = Period.between( then , today );
"समय पहले" टुकड़ों की स्ट्रिंग बनाएँ।
String output = p.getDays() + " days ago\n" + p.getMonths() + " months ago\n" + p.getYears() + " years ago";
सांत्वना देना।
System.out.println( "From: " + then + " to: " + today );
System.out.println( output );
से: 2010-09-27 से: 2019-06-04
8 दिन पहले
8 महीने पहले
8 साल पहले
जावा के बारे में
Java.time ढांचे जावा 8 और बाद में बनाया गया है। इन कक्षाओं परेशानी वर्ष प्रतिस्थापित विरासत जैसे तिथि-समय कक्षाएं java.util.Date
, Calendar
, और SimpleDateFormat
।
अधिक जानने के लिए, Oracle ट्यूटोरियल देखें । और कई उदाहरणों और स्पष्टीकरणों के लिए ढेर अतिप्रवाह खोजें। विशिष्टता JSR 310 है ।
Joda समय परियोजना, अब में रखरखाव मोड , के लिए प्रवास की सलाह है java.time कक्षाएं।
आप अपने डेटाबेस से सीधे java.time वस्तुओं का आदान-प्रदान कर सकते हैं । JDBC 4.2 या उसके बाद के JDBC ड्राइवर का अनुपालन करें । तार की कोई जरूरत नहीं, कोई जरूरत नहींjava.sql.*
कक्षाओं ।
Java.time कक्षाएं कहाँ से प्राप्त करें?
ThreeTen-अतिरिक्त परियोजना अतिरिक्त कक्षाओं के साथ java.time फैली हुई है। यह परियोजना java.time के संभावित भविष्य के परिवर्धन के लिए एक साबित जमीन है। आप यहाँ कुछ उपयोगी वर्गों जैसे मिल सकता है Interval
, YearWeek
, YearQuarter
, और अधिक ।