tl; डॉ
LocalDateTime.parse(
"2012-07-10 14:58:00.000000".replace(" " , "T")
)
माइक्रोसेकंड
फिट नहीं है आप माइक्रोसेकंड (छह दशमलव अंक) एक डेटा केवल मिलीसेकेंड संकल्प में सक्षम प्रकार में साथ एक मूल्य निचोड़ करने के लिए प्रयास कर रहे हैं (तीन दशमलव अंक) । वह असंभव है।
इसके बजाय, पर्याप्त पर्याप्त रिज़ॉल्यूशन वाले डेटा प्रकार का उपयोग करें। java.time कक्षाएं नैनोसेकंद संकल्प (नौ दशमलव अंक) का उपयोग करती हैं।
Unzoned इनपुट एक zoned प्रकार
फिट नहीं करता है आप की कमी एक मूल्य डाल करने के लिए प्रयास कर रहे हैं किसी भी ऑफसेट-से-यूटीसी या समय क्षेत्र डेटा प्रकार (Date
) है कि केवल यूटीसी में मूल्यों का प्रतिनिधित्व करता है में। तो आप इनपुट (यूटीसी ऑफसेट) जोड़ रहे हैं जो इनपुट द्वारा इरादा नहीं है।
इसके बजाए उचित डेटा प्रकार का उपयोग करें। विशेष रूप से, java.time.LocalDateTime
।
केस-संवेदी
अन्य जवाब और टिप्पणियाँ सही ढंग से समझाने कि स्वरूपण पैटर्न कोड केस-संवेदी है। तो MM
और mm
के विभिन्न प्रभाव हैं।
बचें विरासत कक्षाएं
परेशानी पुराने तिथि-समय वर्गों जावा के जल्द से जल्द संस्करणों के साथ बंडल अब विरासत, java.time जावा 8 और बाद में बनाया गया वर्गों द्वारा का स्थान ले लिया है।
आईएसओ 8601
आपका इनपुट तार लगभग आईएसओ 8601 मानक प्रारूप का पालन करते हैं। पूरी तरह से पालन करने के लिए स्पेस को T
के साथ बीच में बदलें।
java.time कक्षा स्ट्रिंग को पार्सिंग/जनरेट करते समय मानक स्वरूपों का डिफ़ॉल्ट रूप से उपयोग करते हैं। तो स्वरूपण पैटर्न निर्दिष्ट करने की कोई आवश्यकता नहीं है।
दिनांक समय वस्तुओं नहीं "प्रारूप"
है और मैं उसके एवज में तारीख वस्तु की जरूरत है एक ही प्रारूप का किया जाना है।
नहीं, डेट-टाइम ऑब्जेक्ट्स में "प्रारूप" नहीं है। केवल तारों के साथ डेट-टाइम ऑब्जेक्ट्स को भंग न करें। स्ट्रिंग्स ऑब्जेक्ट्स के इनपुट और आउटपुट हैं। ऑब्जेक्ट्स डेट-टाइम जानकारी के अपने आंतरिक प्रतिनिधित्व को बनाए रखते हैं, जिनके विवरण प्रोग्रामर को कॉल करने के रूप में हमारे लिए अप्रासंगिक हैं।
java.time
आपका इनपुट ऑफसेट-से-यूटीसी या परेशानी मुझे क्षेत्र के किसी भी सूचक का अभाव है। इसलिए हम LocalDateTime
ऑब्जेक्ट्स के रूप में पार्स करते हैं जिनमें उन अवधारणाओं की कमी होती है।
String input = "2012-07-10 14:58:00.000000".replace(" " , "T") ;
LocalDateTime ldt = LocalDateTime.parse(input) ;
जनरेट कर रहा है तार
एक स्ट्रिंग अपने LocalDateTime
के मूल्य का प्रतिनिधित्व बनाने के लिए:
- कॉल
toString
मानक आईएसओ 8601 प्रारूप में एक स्ट्रिंग प्राप्त करने के लिए।
- कस्टम प्रारूपों या स्वचालित रूप से स्थानीय प्रारूपों में तारों के उत्पादन के लिए
DateTimeFormatter
का उपयोग करें।
अधिक जानकारी के लिए खोज स्टैक ओवरफ़्लो के रूप में इन विषयों को कई बार पहले से कवर किया गया है।
ZonedDateTime
एक LocalDateTime
नहीं समय रेखा पर एक सटीक बिंदु का प्रतिनिधित्व करता है।
वास्तविक क्षण निर्धारित करने के लिए, समय क्षेत्र असाइन करें। उदाहरण के लिए कोलकाता में दोपहर भारत पेरिस फ्रांस में दोपहर से बहुत पहले आता है। समय क्षेत्र के बिना दोपहर 26-27 घंटों की सीमा से किसी भी समय हो सकता है।
ZoneId z = ZoneId.of("Asia/Kolkata") ;
ZonedDateTime zdt = ldt.atZone(z) ;
बारे java.time
java.time ढांचे जावा 8 और बाद में बनाया गया है। ये कक्षाएं परेशान पुराने legacy दिनांक-समय कक्षाएं जैसे java.util.Date
, Calendar
, & SimpleDateFormat
प्रदान करती हैं।
Joda-Time प्रोजेक्ट, अब maintenance mode में, java.time कक्षाओं में माइग्रेशन की सलाह देता है।
और जानने के लिए, Oracle Tutorial देखें। और कई उदाहरणों और स्पष्टीकरणों के लिए स्टैक ओवरफ़्लो खोजें। विशिष्टता JSR 310 है।
आप अपने डेटाबेस के साथ java.time ऑब्जेक्ट्स का आदान-प्रदान कर सकते हैं। JDBC 4.2 या बाद में JDBC driver का अनुपालन करें। तारों की कोई ज़रूरत नहीं है, java.sql.*
कक्षाओं की कोई आवश्यकता नहीं है।
जावा.टाइम कक्षाएं कहां प्राप्त करें?
ThreeTen-Extra परियोजना अतिरिक्त कक्षाओं के साथ java.time फैली हुई है। यह परियोजना java.time के संभावित भविष्य के जोड़ों के लिए एक सिद्ध भूमि है। आपको यहां कुछ उपयोगी कक्षाएं मिल सकती हैं जैसे Interval
, YearWeek
, YearQuarter
, और more।
"जनवरी 10 14:58:00 ईएसटी 2012" का उत्पादन क्या हो रहा है? क्या आप 'System.out.println (thisDate) चला रहे हैं? – Gili
आप मिनटों और महीनों के लिए 'मिमी' का उपयोग कर रहे हैं। आपने अपेक्षा की थी कि 'SimpleDateFormat' प्रदान की गई स्ट्रिंग में मिनटों और महीनों के बीच अंतर करेगा? कृपया एक बार फिर javadoc में पैटर्न तालिका पढ़ें: http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat।एचटीएमएल – BalusC
@Gili: हाँ, मैं System.out.println (thisDate) का उपयोग कर रहा हूं। –