मुझे मिलीसेकंड में 98d 01h 23m 45s
फॉर्म की अवधि स्ट्रिंग को पार्स करने की आवश्यकता है।मिलीसेकंड में पार्सिंग अवधि स्ट्रिंग
मुझे उम्मीद थी कि इस तरह की अवधि के लिए SimpleDateFormat
के बराबर था, लेकिन मुझे कुछ भी नहीं मिला। क्या कोई इस उद्देश्य के लिए एसडीएफ का उपयोग करने की कोशिश कर रहा है या इसके खिलाफ सिफारिश करेगा?
मेरे वर्तमान योजना संख्या के खिलाफ मेल खाते हैं और इस तरह
Pattern p = Pattern.compile("(\\d+)");
Matcher m = p.matcher("98d 01h 23m 45s");
if (m.find()) {
int days = Integer.parseInt(m.group());
}
// etc. for hours, minutes, seconds
कुछ करना है और फिर TimeUnit का उपयोग यह सब एक साथ रखा और मिलीसेकेंड में कन्वर्ट करने के लिए regex का उपयोग करने के लिए है।
मुझे लगता है कि मेरा सवाल है, यह ओवरकिल जैसा लगता है, क्या यह आसान हो सकता है? तिथियों और टाइमस्टैम्प के बारे में बहुत सारे प्रश्न सामने आए लेकिन यह थोड़ा अलग है, शायद।
आपका दृष्टिकोण अब तक ठीक दिखता है। हालांकि, Integer.parseInt() 'और अग्रणी शून्य के साथ सावधान रहें। कुछ ... '08h ...' की तरह ऑक्टल के रूप में व्याख्या की जाएगी और पार्स करने में असफल हो जाएगी। किसी भी अग्रणी शून्य से पट्टी। –
@ फिलिप रिचर्ट यह सुरक्षित नहीं है जिस तरह से मैं इसे ऊपर उपयोग कर रहा हूं, क्योंकि 'Integer.parseInt ("08")' रिटर्न '8' है? – Craigy
शायद प्रमुख रिक्त स्थान की आपकी सोच। 'System.out.println (" Integer.parseInt ("00 9")); मेरी मशीन पर 'प्रिंट "9"। 'H' को' parseInt' पर नहीं भेजा जाना चाहिए, हालांकि – Gene