जब मैं डेटटाइम का उपयोग करता हूं तो मुझे अप्रत्याशित परिणाम मिलते हैं। ParseExact।डेटटाइम का उपयोग करना। पैरासेक्स केवल समय प्राप्त करने के लिए (दिन के बिना)
Dim MinVal As DateTime = #12:00:01 AM#
Dim MaxVal As DateTime = #11:59:59 PM#
Dim TooBig1, Equal1 As Boolean
Dim TooBig2, Equal2 As Boolean
Dim dt1 As DateTime = #12:00:01 AM#
Dim dt2 As DateTime = DateTime.ParseExact("12:00:01 AM", "hh:mm:ss tt", Globalization.DateTimeFormatInfo.InvariantInfo)
TooBig1 = (dt1.CompareTo(MaxVal) > 0)
Equal1 = (dt1.CompareTo(MinVal) = 0)
TooBig2 = (dt2.CompareTo(MaxVal) > 0)
Equal2 = (dt2.CompareTo(MinVal) = 0)
परिणाम DT1 के लिए ठीक है: यहाँ अपने परीक्षण कोड है
- यह # 12 के रूप में डिबगर में पता चलता है: (दिन) के बिना 01 पूर्वाह्न #
- TooBig1 है: 00 झूठी
- Equal1 सच
है लेकिन परिणाम (गलत?) DT2 के लिए अप्रत्याशित है:
- यह # 9 के रूप में डिबगर में पता चलता/30/2011 12:00:01 #
- TooBig2 सच
- Equal2 झूठी
है ऐसा लगता है कि क्योंकि दिन है जैसे कि यह है व्यवस्थित रूप से ParseExact द्वारा जोड़ा गया है भले ही मैं केवल प्रारूप में समय निर्दिष्ट करता हूं।
मेरा प्रश्न है: मैं डेटटाइम के साथ बस समय कैसे पढ़ सकता हूं। पैरासेक्स?
, एक 'TimeSpan' वस्तु बन जाता है यही कारण है कि हालांकि, नहीं एक' DateTime'। तथ्य यह है कि आप इस महत्वपूर्ण विवरण पर चमकते हैं कि एक बार फिर से दिखाया गया है कि अवांछित चर का उपयोग एक भयानक अभ्यास है। – Nyerguds
@Nyerguds: आप सही हैं कि परिणाम 'टाइमस्पेन' है। जाहिर है कि ओपी चाहता था, या उसने तुरंत यह पता लगाया कि इससे नया 'डेटटाइम' कैसे बनाया जाए। उस कोड स्निपेट में कोई अवांछित चर नहीं हैं; दोनों दृढ़ता से टाइप किए जाते हैं, क्योंकि संकलक पहली बार 'टाइमटाइम' के रूप में 'टाइमऑनली' का उपयोग करने का प्रयास करते समय काफी स्पष्ट रूप से स्पष्ट कर देगा। क्या आप शायद यह कहने का मतलब रखते थे कि टाइप अनुमान का लाभ लेना एक बुरी चीज है? –
हां, "untyped" के साथ मेरा मतलब था "विशेष रूप से कोड में टाइप नहीं किया गया", जिसका अर्थ वास्तव में टाइप अनुमान है। यह भी इसका एक आदर्श उदाहरण है; यह उस कोड से बिल्कुल दिखाई नहीं दे रहा है कि 'डेटटाइम' शून्य 'डेटटाइम' _not_ 'डेटटाइम' के बराबर है। – Nyerguds