2010-01-27 18 views
7

मेरा ग्राहक है जो मध्यरात्रि को पहले दिन के अंत के रूप में दर्शाता है।दिनांक समय 24:00 (आधी रात)

उदाहरण

var date = DateTime.Parse("1/27/2010 0:00"); 
Console.WriteLine(date.ToString(<some format>)); 

प्रदर्शन:

1/26/2010 24:00 

मेरा मानना ​​है कि यह आईएसओ 8601 मानक में मान्य है। (see this)

क्या .NET में इसका समर्थन करने का कोई तरीका है (बिना बदसूरत स्ट्रिंग मैनिपुलेशन हैक)?

उत्तर

7

मुझे लगता है कि आपको तिथियों के लिए कस्टम फॉर्मेटर की आवश्यकता होगी। IFormatProvider और ICustomFormatter इंटरफेस देखें।

This और this भी मदद कर सकता है।

+0

धन्यवाद, लुसेरो। मैंने सोचा कि ये इंटरफेस उपयोगी हो सकते हैं। (+1) यदि यह काम करता है, तो मैं एक उदाहरण पोस्ट करूंगा। –

+0

कस्टम फॉर्मेटर स्ट्रिंग के साथ काम करता है। फोर्मैट(), लेकिन ICustomFormatter.Format() दिनांक का उपयोग करते समय कभी भी कॉल नहीं किया जाता है। ToString (नया MyFormatter()); –

2

आप एक विस्तार विधि सेट कर सकते हैं, हालांकि उचित दृष्टिकोण शायद IFormatProvider का उपयोग Lucero suggested के रूप में करना होगा। एक्सटेंशन विधि दिनांक की Date property की तुलना करेगी, जो समय घटक के साथ तिथि को मध्यरात्रि में सेट करती है। यह इस करने के समान होगा:

public static class Extensions 
{ 
    public static string ToCustomFormat(this DateTime date) 
    { 
     if (date.TimeOfDay < TimeSpan.FromMinutes(1)) 
     { 
      return date.AddDays(-1).ToString("MM/dd/yyyy") + " 24:00"; 
     } 
     return date.ToString("MM/dd/yyyy H:mm"); 
    } 
} 

तब का उपयोग कर इसे कहते:

var date = DateTime.Parse("1/27/2010 0:00"); 
Console.WriteLine(date.ToCustomFormat()); 

संपादित करें: टिप्पणी प्रति अपडेट किया गया।

+2

उस मिनट में 60,000 मिलीसेकंड हैं और यह केवल उनमें से एक के साथ काम करता है (डेटटाइम। आज 0: 00.000 AM का प्रतिनिधित्व करता है) –

+0

@DrJokepu: मुझे यकीन नहीं है कि मैं अनुसरण करता हूं। क्या आप विस्तार से बता सकते हैं? यदि इनपुट ओपी द्वारा दी गई आधी रात है तो तुलना ठीक होनी चाहिए। यदि मिलीसेकंड शामिल हैं, जैसे '0: 00: 30', उपरोक्त वर्तमान दिन वापस लौटाएगा जब तक कि इसे 'घंटा' और' मिनट' गुणों के विरुद्ध जांच न किया जाए। उदाहरण के लिए –

+0

प्लस 1। मुझे लगता है कि आप लुसेरो के सुझाव के बारे में सही हैं। –

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