मेरे पास डेटटाइम ऑब्जेक्ट है और मैं वर्तमान संस्कृति के लिए स्थानीयकृत एक स्ट्रिंग के रूप में घंटे, मिनट, दूसरा, और आंशिक सेकेंड आउटपुट करना चाहता हूं।मैं एक डेटटाइम को एक स्ट्रिंग में कैसे बदल सकता हूं जिसमें स्थानीयकृत आंशिक सेकंड हैं?
इसके साथ दो मुद्दे हैं।
पहला मुद्दा कोई मानक DateTime
प्रारूप नहीं है जो fractional सेकंड दिखाएगा। मैं अनिवार्य रूप से जानना चाहता हूं कि long time डेटटाइम प्रारूप कैसे प्राप्त करें लेकिन आंशिक सेकंड के साथ।
मैं निश्चित रूप से DateTimeFormatInfo.LongTimePattern
प्राप्त कर सकता हूं और इसे ".fff" जोड़ सकता हूं और इसे DateTime.ToString()
पर भेज सकता हूं, लेकिन कुछ संस्कृति विशिष्ट प्रारूप, यूएस विशेष रूप से, AM/PM के साथ समाप्त होता है। तो यह इतना आसान नहीं है।
दूसरा मुद्दा यह है कि DateTime.ToString()
संख्या दशमलव विभाजक को स्थानांतरित करने के लिए प्रतीत नहीं होता है। यदि मैंने प्रत्येक संस्कृति को हार्ड कोडित कस्टम टाइम प्रारूप का उपयोग करने के लिए मजबूर करने का निर्णय लिया है, तो यह अभी भी स्थानीयकृत स्ट्रिंग नहीं बनाएगा क्योंकि संख्या दशमलव विभाजक संस्कृति विशिष्ट नहीं होगा।
मामलों को जटिल बनाने के लिए, कुछ संस्कृतियों में दिनांक समय प्रारूप होते हैं जो उनके स्वरूपण के हिस्से के रूप में अवधि का उपयोग करते हैं। इससे प्लेसहोल्डर को रखना मुश्किल हो जाता है, उदाहरण के लिए अवधि और इसे संस्कृति विशिष्ट दशमलव विभाजक के साथ प्रतिस्थापित करें।
अभी के लिए मैं इस समाधान का सहारा लिया:
string format = string.Format("HH:mm:ss{0}fff",
CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator);
string time = DateTime.Now.ToString(format);
कौन सा मुझे लगता है कि हर संस्कृति उस समय विभाजक के रूप में एक ही दशमलव विभाजक नहीं है के लिए काम करना चाहिए, लेकिन यह एक अनुमान है।
नोट: हालांकि, मेरे विशिष्ट अनुप्रयोग के लिए दोनों मुद्दों का समाधान करना अच्छा लगेगा, लेकिन मानक दिनांक समय प्रारूप का उपयोग करने के बजाय मैं आंशिक सेकंड के साथ कस्टम दिनांक समय प्रारूप को स्थानीयकृत करने में अधिक रुचि रखता हूं।
मुझे नहीं लगता कि किसी भी सांस्कृतिक सम्मेलन में आंशिक सेकंड शामिल हैं। आपका दृष्टिकोण ठीक दिखता है लेकिन एएम/पीएम बनाम एचएच समस्या को दूर करने के लिए मुझे लांगटाइम पैटर्न और विकल्प 'एसएस' मिलेगा। –