मैं एक खोज वाक्यविन्यास के हिस्से के रूप में मुक्त-फॉर्म तिथियों का उपयोग कर रहा हूं। मुझे तारों से तिथियों का विश्लेषण करने की आवश्यकता है, लेकिन केवल उस तारीख के हिस्सों को संरक्षित करें जो वास्तव में निर्दिष्ट हैं। उदाहरण के लिए, "नवंबर 1, 2010" एक विशिष्ट तारीख है, लेकिन "नवंबर 2010" "नवम्बर 1, 2010" की तारीखों की सीमा "30 नवंबर, 2010" है।निर्दिष्ट सभी मानों के बिना पार्सिंग तिथियां
दुर्भाग्य से, DateTime.Parse
और दोस्तों के एक ही DateTime
को इन तिथियों को पार्स:
DateTime.Parse("November 1, 2010") // == {11/1/2010 12:00:00 AM}
DateTime.Parse("November, 2010") // == {11/1/2010 12:00:00 AM}
मुझे पता है कि जो DateTime
के कुछ हिस्सों वास्तव में पार्स कर रहे थे और जो पार्सर द्वारा अनुमान लगाया गया की जरूरत है। अनिवार्य रूप से, मुझे DateTime.Parse("November, 2010") == {11/-1/2010 -1:-1:-1}
की आवश्यकता है; मैं तब देख सकता हूं कि दिन का हिस्सा गुम है और पूरे महीने को कवर करने वाली तिथियों की सीमा की गणना करता है।
(आंतरिक रूप से, सी # DateTimeParse
और DateTimeResult
कक्षाएं उस तारीख को पार्स और वास्तव में जानकारी की आवश्यकता की रक्षा है, लेकिन समय से तारीख सार्वजनिक इंटरफेस इसे बंद छीन लिया गया है करने के लिए वापस हो जाता है। मैं नहीं बल्कि में दर्शाती से बचने चाहते हैं इन वर्गों, जब तक कि यह वास्तव में एकमात्र मार्ग नहीं है।)
क्या DateTime.Parse
प्राप्त करने का कोई तरीका है यह बताएं कि यह किस प्रारूप को दिनांक को पार्स करने के लिए उपयोग किया जाता है? या लौटाए गए DateTime
में अनिर्दिष्ट भागों के लिए प्लेसहोल्डर्स हो सकते हैं? मैं एक और तारीख पार्सर का उपयोग करने के लिए भी खुला हूं, लेकिन मैं इसे आंतरिक के रूप में विश्वसनीय और लोकेल-लचीला होना चाहता हूं। अग्रिम में धन्यवाद।
संपादित करें: मैंने ParseExact
भी कोशिश की है, लेकिन Parse
सभी प्रारूपों को समझाते हुए लगभग असंभव प्रतीत होता है। Parse
वास्तव में DateTimeFormatInfo.GetAllDateTimePatterns
द्वारा लौटाए गए से अधिक प्रारूप स्वीकार करता है, जो कि मुझे लगता है कि एक स्रोत के रूप में कैननिकल के बारे में है।
कृपया मेरे संपादन ऊपर देखें। ParseExact सामान्य दिनांक पार्सिंग के लिए अपर्याप्त प्रतीत होता है। – kevingessner