2010-09-02 16 views
5

मेरे पास सामान्य 00:00 से 23:00 के बजाय आउटपुट तिथियों के लिए 01:00 से 24:00 तक एक अजीब व्यावसायिक आवश्यकता है। यह वास्तव में एक पागल आवश्यकता है, लेकिन दुर्भाग्य से मुझे नहीं लगता कि मैं इससे बच सकता हूं।00-23 के बजाय 01-24 में .NET डेटटाइम 24-घंटे प्रारूप का प्रतिनिधित्व कैसे करें?

यह हमारे सॉफ़्टवेयर में एक कॉन्फ़िगरेशन विकल्प होगा, इसलिए मुझे अभी भी सामान्य 00-23 का समर्थन करने की आवश्यकता होगी, इसलिए मुझे आशा है कि मैं इसे प्रारूप स्ट्रिंग के साथ किसी भी तरह से कर सकता हूं। लेकिन मैं परिणाम स्ट्रिंग को पोस्ट-प्रोसेस करने के लिए रेगेक्स का उपयोग करने पर भी विचार कर रहा हूं यदि इससे यह आसान हो जाता है।

धन्यवाद!

+1

तो दूसरे शब्दों में, आपको 00: XX के बजाय 24: XX प्रदर्शित करने की आवश्यकता है और कुछ भी नहीं बदलेगा, है ना? – zneak

+0

इसे 24: एक्सएक्स प्रदर्शित करने की आवश्यकता है लेकिन मोड़ यह भी पिछली तारीख से दिखाया जाना चाहिए। जैसे 9/7/2010 00:00 9/6/2010 24:00 के रूप में प्रदर्शित किया जाना चाहिए। – randbrown

उत्तर

2

यह एक आवरण वर्ग के लिए एक अच्छे उम्मीदवार जो व्यावसायिक नियमों के अनुसार दिनांक समय फ़ॉर्मेट करने के लिए प्रयोग किया जाता है की तरह लगता है: वैकल्पिक रूप से

public class BusinessDateTimeFormatter 
{ 
    public BusinessDateTimeFormatter(DateTime dateTime) 
    { 
     _dateTime = dateTime; 
    } 

    public override string ToString() 
    { 
     return String.Format("{0} {1}:{2}", _dateTime.Date, _dateTime.Hour + 1, _dateTime.Minute); 
    } 
} 

, और शायद और भी सही ढंग से, आप एक प्रकार का निर्माण कर सकते हैं जो डेटटाइम के व्यवसाय के विचार को दर्शाता है। ऑब्जेक्ट-ओरिएंटेड डिज़ाइन में, कस्टम प्रकारों के साथ आदिम प्रकारों का यह प्रतिस्थापन अक्सर होता है, क्योंकि डोमेन को मॉडल करने के लिए आपके द्वारा वर्णित इस तरह के विशेष प्रतिबंध होते हैं।

+0

किसी दिनांक के लिए ग्राहक फ़ॉर्मेटर मेरे लिए जाने के तरीके की तरह लगता है। आप इसे encapsulating कर रहे हैं और नाम से स्पष्ट है कि यह क्यों किया गया है – JonWillis

+0

मैं इस सुझाव के साथ कुछ करने के लिए समाप्त हो गया - स्वरूपण को संभालने के लिए एक साधारण व्यापार वर्ग। मैंने इस दृष्टिकोण को चुना क्योंकि यह वर्तमान में केवल मेरे आवेदन के एक क्षेत्र में आवश्यक है, इसलिए यह अब के लिए यह सबसे आसान समाधान था। यदि ऐप के अन्य फीचर क्षेत्रों में यह आवश्यक हो जाता है, तो मैं एक अधिक मजबूत कस्टम फॉर्मेटर या ऐसा कुछ लागू करने पर विचार कर सकता हूं। – randbrown

3

अपने स्वयं के प्रारूप प्रदाता बनाकर नेट बढ़ाएँ: http://msdn.microsoft.com/en-us/library/0asazeez(VS.71).aspx

+0

मुझे नहीं लगता कि यह एक विशेष रूप से अच्छा विचार है। IFormatProvider की ज़िम्मेदारी संस्कृति के आधार पर एक संस्कृति के आधार पर प्रारूपित करना है। हालांकि यह काम करेगा, यह उस इंटरफ़ेस की जिम्मेदारी और इसी अधिभार की जिम्मेदारी है। चूंकि यह एक व्यावसायिक चिंता है, तर्क मॉडल में जाना चाहिए। – codekaizen

+1

@code - मैं असहमत हूं। वह मूल रूप से एक कस्टम संस्कृति बना रहा है, व्यापार तर्क को परिभाषित नहीं कर रहा है (वह मानक 'डेटटाइम' व्यवहार का उपयोग कर रहा है, केवल उपयोगकर्ता को अलग-अलग मूल्य प्रदर्शित करता है)। यह वही है जो 'IFormatProvider' के लिए है। –

+0

@ जोन बी - कस्टम व्यवसाय तर्क कैसे संस्कृति है? वह विशेष रूप से कहता है कि यह एक व्यावसायिक आवश्यकता है। – codekaizen

संबंधित मुद्दे