प्रारूप स्ट्रिंग से आंशिक सेकंड निकालने का प्रयास करें तारीख में useed किया जाना चाहिए या। मैं बस एक ही मुद्दे में भाग गया, लेकिन थोड़ा अलग प्रारूप के साथ। मेरा इनपुट प्रारूप आईएसओ प्रारूप में नहीं था (नहीं "टी", और कोई "ज़ेड"), लेकिन लक्षण वही था - समय कुछ यादृच्छिक संख्या और सेकंड से बंद था, लेकिन बाकी सब कुछ ठीक था।
आंशिक दूसरे प्रारूप का उपयोग करते समय:
SimpleDateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS");
# Parsed date: 2011-05-27 17:11:15.271816 => Fri May 27 17:15:46 EDT 2011
# Parsed date: 2011-05-27 17:09:37.750343 => Fri May 27 17:22:07 EDT 2011
# Parsed date: 2011-05-27 17:05:55.182921 => Fri May 27 17:08:57 EDT 2011
# Parsed date: 2011-05-27 16:55:05.69092 => Fri May 27 16:56:14 EDT 2011
# Parsed date: 2011-05-27 16:38:35.50348 => Fri May 27 16:39:25 EDT 2011
मैं इसे प्रारूप से आंशिक सेकंड को हटाने के द्वारा तय यह वही मेरी लॉग परिणामों की तरह दिखाई देता है।
SimpleDateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
# Parsed date: 2011-05-27 17:11:15.271816 => Fri May 27 17:11:15 EDT 2011
# Parsed date: 2011-05-27 17:09:37.750343 => Fri May 27 17:09:37 EDT 2011
# Parsed date: 2011-05-27 17:05:55.182921 => Fri May 27 17:05:55 EDT 2011
# Parsed date: 2011-05-27 16:55:05.69092 => Fri May 27 16:55:05 EDT 2011
# Parsed date: 2011-05-27 16:38:35.50348 => Fri May 27 16:38:35 EDT 2011
क्या मुझे लगता है कि क्या हो रहा है कि मेरी "आंशिक सेकंड" इनपुट स्ट्रिंग के भाग बहुत बड़ा है (एक ही ओपी उदाहरण में सच है) है। ऐसा लगता है कि यह केवल तीन दशमलव स्थानों की अपेक्षा करता है। यदि आप गणित (पहला उदाहरण लेने के लिए):
- आंशिक सेकंड = ०.२७१८१६ सेकंड
- क्या DateFormat देखता है एक दूसरे
- 271816/1000 == की
271816/1000
271 सेकंड
- 271/60 = 4 मिनट
- 271% से 60 = 31 सेकंड
- 17:11:15 17:15:46 बिल्कुल 4 मिनट,
बंद 31 सेकंड है 210
माइक्रोसेकंड हाँ, SimpleDateFormat को संभाल नहीं कर सकते हैं। करने के लिए सबसे आसान बात अतिरिक्त 3 अंक बाहर निकालना है, उदा। दिनांक = date.substring (0, दिनांक। लम्बाई() - 4) + "जेड"; –
@scottw: सिवाय इसके कि यह हमेशा काम नहीं करेगा, जैसा कि आप मेरे उदाहरण में देख सकते हैं, अंतिम 2 आइटमों में केवल 5 अंक हैं, बजाय 6; इसलिए कुछ मामलों में, केवल 1 दशमलव स्थान हो सकता है, जो पूरी तरह से गलत होगा! यदि आप केवल 3 दशमलव स्थानों के लिए स्ट्रिंग को छोटा कर देते हैं, तो यह ठीक काम करता है। हमारे मामले में, हमें माइक्रोसेकंड की आवश्यकता नहीं थी (मुझे लगता है कि बहुत से लोग इसके साथ भी सहमत होंगे), इसलिए यह प्रारूप स्ट्रिंग से 'एस' को हटाने से बाहर निकलने योग्य समय प्राप्त करने के लिए पर्याप्त है। यदि आपको आंशिक सेकंड की आवश्यकता है, तो हाँ, आपको कुछ स्ट्रिंग मैनिपुलेशन करना होगा। – Joe
यह एक अच्छा बिंदु है जो - मेरा समाधान केवल काम करता था क्योंकि मैं एक ऐसी सेवा से काम कर रहा था जो हमेशा अंशकालिक सेकंड (शून्य के साथ पैडिंग सहित) के लिए 6 अंक प्रदान करता था, इसलिए मैं स्ट्रिंग मैनिपुलेशन से दूर हो सकता था। –