tl; डॉ
LocalDateTime.parse(
"2016-01-23 12:34".replace( " " , "T" )
)
.atZone( ZoneId.of( "Asia/Karachi" ) )
.plusMinutes( 10 )
java.time
दिनांक-समय के काम के लिए उत्कृष्ट java.time कक्षाओं का उपयोग करें। ये कक्षाएं इस तरह के java.util.Date
और पुराने पुराने समय की परेशानियों को दबा देती हैं java.util.Calendar
।
आईएसओ 8601
Java.time कक्षाएं दिनांक-समय मानों के तार / उत्पन्न करने के लिए डिफ़ॉल्ट रूप से मानक आईएसओ 8601 प्रारूपों का उपयोग करती हैं। अपने इनपुट स्ट्रिंग का अनुपालन करने के लिए, बीच में SPACE की जगह a T
।
String input = "2016-01-23 12:34" ;
String inputModified = input.replace( " " , "T" );
LocalDateTime
अपने इनपुट स्ट्रिंग को पार्स करें LocalDateTime
क्योंकि इसमें समय क्षेत्र या ऑफसेट-यूटीसी के बारे में किसी भी जानकारी का अभाव है।
LocalDateTime ldt = LocalDateTime.parse( inputModified );
दस मिनट जोड़ें।
LocalDateTime ldtLater = ldt.plusMinutes( 10 );
ldt.toString (): 2016-01-23T12: 34
ldtLater.toString (): 2016-01-23T12: 44
IdeOne.com में लाइव कोड देखें ।
इसका LocalDateTime
कोई समय क्षेत्र नहीं है, इसलिए यह समयरेखा पर एक बिंदु का प्रतिनिधित्व नहीं करता है। वास्तविक समय में अनुवाद करने के लिए एक समय क्षेत्र लागू करें। एक निर्दिष्ट उचित समय क्षेत्र नाम के प्रारूप में continent/region
, इस तरह के रूप America/Montreal
, Africa/Casablanca
या Pacific/Auckland
, या Asia/Karachi
। 3-4 पत्र संक्षिप्त नाम का उपयोग कभी नहीं इस तरह के रूप EST
या IST
या PKT
वे कर रहे हैं के रूप में नहीं सच समय क्षेत्र, नहीं मानकीकृत, और यहां तक कि अद्वितीय नहीं (!)।
ZonedDateTime
यदि आप इस मान के लिए निर्धारित समय क्षेत्र जानते हैं, तो a ZoneId
पाने के लिए आवेदन करें ZonedDateTime
।
ZoneId z = ZoneId.of( "Asia/Karachi" );
ZonedDateTime zdt = ldt.atZone( z );
zdt.toString (): 2016-01-23T12: 44 + 05: 00 [एशिया / कराची]
विसंगतियों
टाइम ज़ोन जोड़ने से पहले या बाद में उन दस मिनट को जोड़ने के बारे में सोचें। दीवार-घड़ी के समय को स्थानांतरित करने वाले डेलाइट सेविंग टाइम (डीएसटी) जैसी विसंगतियों के कारण आपको बहुत अलग परिणाम मिल सकते हैं ।
ज़ोन जोड़ने से पहले या बाद में आपको 10 मिनट जोड़ना चाहिए या नहीं यह आपके व्यवसाय परिदृश्य और नियमों के अर्थ पर निर्भर करता है।
युक्ति: जब आप समय पर एक विशिष्ट क्षण का इरादा रखते हैं, तो हमेशा समय क्षेत्र की जानकारी रखें । उस जानकारी को न खोएं, जैसा कि आपके इनपुट डेटा के साथ किया गया है। क्या मूल्य का 12:34
अर्थ पाकिस्तान में दोपहर है या फ्रांस में दोपहर है या क्वेबेक में दोपहर है? अगर आपका मतलब पाकिस्तान में दोपहर है, तो कम से कम ऑफसेट-यूटीसी ( +05:00
), और बेहतर अभी भी, समय क्षेत्र के नाम ( ) को शामिल करके कहें Asia/Karachi
।
Instant
यदि आप उसी क्षण चाहते हैं जैसे कि यूटीसी के लेंस के माध्यम से देखा जाता है , तो एक निकालें Instant
। Instant
कक्षा में समय रेखा पर एक पल का प्रतिनिधित्व करता यूटीसी के एक संकल्प के साथ नैनोसेकंड (नौ (9) एक दशमलव भिन्न के अंकों के लिए)।
Instant instant = zdt.toInstant();
धर्मांतरित
जब भी संभव हो पुरानी परेशान करने वाली पुरानी कक्षाओं से बचें। लेकिन अगर आपको चाहिए, तो आप परिवर्तित कर सकते हैं। पुरानी कक्षाओं में जोड़े गए नए तरीकों को कॉल करें।
java.util.Date utilDate = java.util.Date.from( instant );
जावा के बारे में
Java.time ढांचे जावा 8 और बाद में बनाया गया है। इन कक्षाओं परेशानी वर्ष प्रतिस्थापित विरासत जैसे तिथि-समय कक्षाएं java.util.Date
, Calendar
, और SimpleDateFormat
।
Joda समय परियोजना, अब में रखरखाव मोड , प्रवास java.time को सलाह देता है।
अधिक जानने के लिए, Oracle ट्यूटोरियल देखें । और कई उदाहरणों और स्पष्टीकरणों के लिए ढेर अतिप्रवाह खोजें। विशिष्टता JSR 310 है ।
Java.time कक्षाएं कहाँ से प्राप्त करें?
ThreeTen-अतिरिक्त परियोजना अतिरिक्त कक्षाओं के साथ java.time फैली हुई है। यह परियोजना java.time के संभावित भविष्य के अतिरिक्त के लिए एक साबित जमीन है। आप यहाँ कुछ उपयोगी वर्गों जैसे मिल सकता है Interval
, YearWeek
, YearQuarter
, और अधिक ।