2009-03-25 28 views
18

ऐसा लगता है कि यह निर्धारित करने के कई तरीके हैं कि कोई दिया गया सिस्टम। डेटटाइम मध्यरात्रि का प्रतिनिधित्व करता है। प्रत्येक का भला - बुरा क्या है? क्या एक और पठनीय है या दूसरों की तुलना में बेहतर प्रदर्शन करता है?यह निर्धारित करने का सबसे अच्छा तरीका क्या है कि सिस्टम। डेटटाइम आधी रात है?

संपादित करें: मेरा मानना ​​है कि पठनीयता तब तक प्रदर्शन से अधिक महत्वपूर्ण है जब तक प्रोफाइलिंग दिखाती है कि कोई समस्या नहीं है। यही कारण है कि मैंने दोनों के बारे में पूछा।

उदाहरण 1

Public Function IsMidnight(ByVal value As Date) As Boolean 
    Return value.TimeOfDay = TimeSpan.FromHours(0) 
End Function 

उदाहरण 2

Public Function IsMidnight(ByVal value As Date) As Boolean 
    Return value.CompareTo(value.[Date]) = 0 
End Function 
+0

मेरे उदाहरण VB.NET में हैं के बाद से वह यह है कि क्या मैं वर्तमान में पेशेवर का उपयोग कर रहा हूँ। हालांकि, यह प्रश्न .NET Framework में सभी भाषाओं पर लागू है। –

+0

उपयोग के बारे में उत्सुक लोगों के लिए, मैं तिथि फ़ील्ड बनाम दिनांक फ़ील्ड बनाम दिनांक फ़ील्ड द्वारा दर्ज दिनांक समय की जांच कर रहा हूं। –

उत्तर

37

मैं (उदाहरण के लिए सी # का उपयोग करके) की जांच चाहते हैं:

bool isMidnight = value.TimeOfDay.Ticks == 0; 

IMO, इस FromHours आदि का उपयोग की तुलना में आसान है, और किसी भी अतिरिक्त गुणन को शामिल नहीं करता है (क्योंकि TicksपरिभाषितTimeSpan - अन्य सभी गुणों की गणना की जाती है)।

+0

मुझे लगता है कि टिक माप माप शायद ही कभी सच साबित होगा। कुछ कथनों को निष्पादित करने में कुछ टिक शामिल होंगी। मिनटों की जांच करना आसान हो सकता है। – Cerebrus

+4

यह * सच्चे * मध्यरात्रि का प्रतिनिधित्व करने वाले हर समय सत्य के लिए मूल्यांकन करेगा। आप इसे 'डेटटाइम.अब' पर नहीं बुलाएंगे, जाहिर है, लेकिन यह नौकरी जैसा कहा गया है ... –

+1

अधिक महत्वपूर्ण बात यह है कि यह मूल प्रश्न से "रिटर्न वैल्यू। टाइमऑफडे = टाइमस्पेन। फ्रॉमहोर्स (0)" से बिल्कुल मेल खाता है। । मिनटों के लिए जांच आदि ** ** –

5

निर्भर करता है। क्या आप मध्यरात्रि के लिए दूसरी रात की जांच करना चाहते हैं, या बस यह आधी रात का समय है?

आधी रात

Public Function IsMidnightHour(ByVal date as Date) As Boolean 
    return date.Hour = 0 
End Function 

आधी रात घंटे और मिनट

Public Function IsMidnightHourAndMinute(ByVal date as Date) As Boolean 
    return date.Hour = 0 AndAlso date.Minute = 0 
End Function 

विशुद्ध रूप से बस के लिए के लिए, वास्तव में आधी रात आप अपने उदाहरण का उपयोग कर सकते हैं। हालांकि इसमें मिलीसेकंड तक की जांच शामिल होगी जो आप नहीं चाहते हैं।

+0

मैं ठीक मध्यरात्रि के लिए मिलीसेकंद की तलाश में हूं। –

+0

@Eric, तो मार्क का जवाब सबसे प्रभावी तरीका है। – JaredPar

7

यह माइक्रो-ऑप्टिमाइज़िंग का थोड़ा सा है, या तो विधि ठीक काम करेगी।

किसी भी तरह, मुझे लगता है कि यह है कि क्या सर्वश्रेष्ठ प्रदर्शन करेगा:

Public Function IsMidnight(ByVal value As Date) As Boolean 
    Return value.TimeOfDay.Ticks = 0 
End Function 

आप समझ में आता कोड चाहते हैं, शायद यह सबसे अच्छा है:

Public Function IsMidnight(ByVal value As Date) As Boolean 
    Return value.TimeOfDay = TimeSpan.Zero 
End Function 
+0

वास्तव में, उनको समान रूप से कम या कम प्रदर्शन करना चाहिए, क्योंकि टाइम्स को टाइमस्पैन में आंतरिक मान के रूप में उपयोग किया जाता है। तो (timespan == timespan) उतना ही कम है जितना (timespan.ticks == timespan.ticks) जो दोनों मामलों में होगा (timespan.ticks == 0) –

+0

हां, == ऑपरेटर को तुलना करने के लिए कार्यान्वित किया गया है गुणों को टिक्स करता है, इसलिए TimeSpan.Zero.Ticks शून्य पाने के लिए बस एक लंबा रास्ता है। :) – Guffa

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

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