tl; डॉ
LocalDate.of( 2014 , 2 , 11 )
यदि आप भयानक पुराने java.util.Dateवर्ग का उपयोग करने पर जोर देते हैं , तो आधुनिक java.time कक्षाओं से परिवर्तित करें ।
java.util.Date
.from(
LocalDate
.of( 2014 , 2 , 11 )
.atStartOfDay(
ZoneId.of( "Africa/Tunis" )
)
.toInstant()
)
विवरण
यदि आप "आसान" चाहते हैं, तो आपको कुख्यात परेशान java.util.Date & .Calendar क्लासेस को जावा के साथ बंडल करने के बजाय जावा 8 में नए java.time पैकेज का उपयोग करना चाहिए ।
java.time
Java.time जावा 8 में बनाया गया और बाद में ढांचा परेशानी वर्ष java.util.Date/.Calendar कक्षाएं supplants।
दिनांक-केवल

एक LocalDateवर्ग को java.time द्वारा किसी भी समय-दिन या समय क्षेत्र के बिना केवल तारीख मूल्य का प्रतिनिधित्व करने की पेशकश की जाती है। आपको एक तिथि निर्धारित करने के लिए एक समय क्षेत्र की आवश्यकता है, उदाहरण के लिए मॉन्ट्रियल में पेरिस की तुलना में एक नए दिन के पहले। ZoneIdवर्ग समय क्षेत्रों के लिए है।
ZoneId zoneId = ZoneId.of( "Asia/Singapore" );
LocalDate today = LocalDate.now( zoneId );
सांत्वना देने के लिए नम:
System.out.println ( "today: " + today + " in zone: " + zoneId );
आज: 2015-11-26 जोन में: एशिया / सिंगापुर
या वर्ष, माह, दिन को निर्दिष्ट करने के लिए एक कारखाने विधि का उपयोग करें।
LocalDate localDate = LocalDate.of( 2014 , Month.FEBRUARY , 11 );
लोकलडेट: 2014-02-11
या DayOfWeekएनम ऑब्जेक्ट के बजाय एक महीने की संख्या 1-12 पास करें ।
LocalDate localDate = LocalDate.of( 2014 , 2 , 11 );
समय क्षेत्र

A LocalDateका कोई वास्तविक अर्थ नहीं है जब तक आप इसे समय क्षेत्र में समायोजित नहीं करते हैं। Java.time में, हम ZonedDateTimeऑब्जेक्ट जेनरेट करने के लिए टाइम ज़ोन लगाते हैं । वह भी समय का मतलब है, लेकिन क्या समय? आमतौर पर दिन के पहले क्षण के साथ जाने के लिए समझ में आता है। आप सोच सकते हैं कि समय का मतलब है 00:00:00.000, लेकिन डेलाइट सेविंग टाइम (डीएसटी) और शायद अन्य विसंगतियों के कारण हमेशा सच नहीं होता है। उस समय को मानने के बजाय, हम java.time को कॉल करके दिन के पहले क्षण को निर्धारित करने के लिए कहते हैं atStartOfDay।
के रूप में , या , के प्रारूप में एक उचित समय क्षेत्र नाम निर्दिष्ट करें । कभी इस तरह के रूप में 3-4 पत्र संक्षिप्त नाम का उपयोग या के रूप में वे कर रहे हैं नहीं सच समय क्षेत्र, नहीं मानकीकृत, और यहां तक कि अद्वितीय नहीं (!)।continent/regionAmerica/MontrealAfrica/CasablancaPacific/AucklandESTIST
ZoneId zoneId = ZoneId.of( "Asia/Singapore" );
ZonedDateTime zdt = localDate.atStartOfDay( zoneId );
zdt: 2014-02-11T00: 00 + 08: 00 [एशिया / सिंगापुर]
यु.टी. सी

बैक-एंड काम (व्यापार तर्क, डेटाबेस, डेटा भंडारण और विनिमय) के लिए हम आमतौर पर यूटीसी समय क्षेत्र का उपयोग करते हैं । Java.time में, Instantक्लास UTC में समय पर एक क्षण का प्रतिनिधित्व करता है। एक झटपट ऑब्जेक्ट को कॉल करके ZonedDateTime से निकाला जा सकता है toInstant।
Instant instant = zdt.toInstant();
तुरंत: 2014-02-10T16: 00: 00Z
धर्मांतरित
आपको java.util.Dateपूरी तरह से कक्षा का उपयोग करने से बचना चाहिए । लेकिन अगर आपको java.time के लिए अभी तक अपडेट नहीं किए गए पुराने कोड के साथ इंटरॉपर्ट करना होगा , तो आप आगे-पीछे कन्वर्ट कर सकते हैं। पुरानी कक्षाओं में जोड़े गए नए रूपांतरण तरीकों को देखें।
java.util.Date d = java.util.from( instant ) ;
…तथा…
Instant instant = d.toInstant() ;

जावा के बारे में
Java.time ढांचे जावा 8 और बाद में बनाया गया है। इन कक्षाओं परेशानी वर्ष प्रतिस्थापित विरासत जैसे तिथि-समय कक्षाएं java.util.Date, Calendar, और SimpleDateFormat।
अधिक जानने के लिए, Oracle ट्यूटोरियल देखें । और कई उदाहरणों और स्पष्टीकरणों के लिए ढेर अतिप्रवाह खोजें। विशिष्टता JSR 310 है ।
Joda समय परियोजना, अब में रखरखाव मोड , प्रवास करने की सलाह देता java.time कक्षाएं।
आप अपने डेटाबेस से सीधे java.time ऑब्जेक्ट्स का आदान-प्रदान कर सकते हैं । JDBC 4.2 या उसके बाद के JDBC ड्राइवर के अनुपालन का उपयोग करें । तार की कोई जरूरत नहीं, कक्षाओं की कोई जरूरत नहीं । हाइबरनेट 5 और जेपीए 2.2 जावा का समर्थन करते हैं ।java.sql.*
Java.time कक्षाएं कहाँ से प्राप्त करें?
अद्यतन: जोडा-टाइम लाइब्रेरी अब रखरखाव मोड में है, और java.time कक्षाओं में प्रवासन की सलाह देती है । मैं इस खंड को इतिहास के लिए छोड़ रहा हूं।
Joda समय
एक बात के लिए, जोडा-टाइम समझदार नंबरिंग का उपयोग करता है इसलिए फरवरी 2नहीं है 1। एक और बात, एक Joda-Time DateTime वास्तव में java.util के विपरीत अपना नियत समय क्षेत्र जानता है। ऐसा लगता है कि समय क्षेत्र है, लेकिन ऐसा नहीं है।
और समय क्षेत्र मत भूलना। अन्यथा आपको JVM का डिफ़ॉल्ट मिल जाएगा।
DateTimeZone timeZone = DateTimeZone.forID( "Asia/Singapore" );
DateTime dateTimeSingapore = new DateTime( 2014, 2, 11, 0, 0, timeZone );
DateTime dateTimeUtc = dateTimeSingapore.withZone( DateTimeZone.UTC );
java.util.Locale locale = new java.util.Locale( "ms", "SG" );
String output = DateTimeFormat.forStyle( "FF" ).withLocale( locale ).print( dateTimeSingapore );
सांत्वना दें…
System.out.println( "dateTimeSingapore: " + dateTimeSingapore );
System.out.println( "dateTimeUtc: " + dateTimeUtc );
System.out.println( "output: " + output );
जब चला…
dateTimeSingapore: 2014-02-11T00:00:00.000+08:00
dateTimeUtc: 2014-02-10T16:00:00.000Z
output: Selasa, 2014 Februari 11 00:00:00 SGT
रूपांतरण
यदि आपको अन्य वर्गों के साथ उपयोग के लिए java.util.Date में कनवर्ट करने की आवश्यकता है ...
java.util.Date date = dateTimeSingapore.toDate();