2010-01-12 16 views
5

मुझे अभी पता चला है कि मेरा SqlDateTime.MinValue विभिन्न मशीनों पर अलग है।सी #: मेरा SqlDateTime.MinValue अलग मशीनों पर अलग क्यों है?

कभी-कभी यह = दिनांक समय (1 9 53, 1, 1, 0, 0, 0) होता है;

लेकिन अन्य मशीनों पर यह = दिनांक समय (1753, 1, 1, 0, 0, 0) है;

यह कैसे हो सकता है? दोनों मशीनों पर ओएस WinXP SP2 है।

संपादित करें:

मेरे कोड इस तरह था:

DateTime date; 

... 

if (date == SqlDateTime.MinValue) 
{ 
    return "(any)"; 
} 
else 
{ 
    return date.ToString(); 
} 

यह कोड 1 जनवरी, 1753 वापस कभी नहीं करना चाहिए, लेकिन यह (कुछ मशीनों पर) किया था। मेरे कोड द्वारा मिनट और सेकंड का दिनांक उपयोग नहीं किया जाता है और हमेशा डिफ़ॉल्ट मानों को बनाए रखना चाहिए।

+0

आप मूल्य का उपयोग कैसे कर रहे हैं? यानी क्या कोई प्रकार का कास्टिंग चल रहा है (उदाहरण के लिए स्ट्रिंग से और) - यदि हां, तो क्या यह कास्टिंग को प्रभावित करने वाली क्षेत्रीय सेटिंग्स पर जा सकता है? – AdaTheDev

+0

डुप्ले: http://stackoverflow.com/questions/805770/sqldatetime-minvalue-c-datetime-minvalue- क्यों – Dhana

+4

यह ** ** एक डुप्लिकेट नहीं है। यह सवाल क्यों है SqlDateTime.MinValue! = DateTime.MinValue, एक अलग प्रश्न – AdaTheDev

उत्तर

0

क्या आप वाकई विभिन्न मानों के बारे में सही हैं? , 1753

यदि यह सही मायने में प्रतिलिपि प्रस्तुत करने योग्य है तो यह लग रहा है जैसे कि यह एक होगा

एक SqlDateTime संरचना के लिए कम से कम मान्य दिनांक 1 जनवरी: SqlDateTime .NET फ्रेमवर्क के सभी संस्करणों के लिए documented as having a fixed start date at MSDN है .NET Framework (या प्रलेखन) में बग, इसलिए माइक्रोसॉफ्ट मदद के लिए पूछने वाले लोग होंगे। यदि समस्या एक बग पाया जाता है तो समर्थन कॉल निःशुल्क हैं।

1

मुझे पता है कि यह समस्या पुराने विंडोज एनटी मशीनों पर हुई थी, जहां दिनांक सीमा 1 9 53-99 99 की बजाय 1953-XXXX थी। क्या आप पूरी तरह से सुनिश्चित हैं कि ये मशीनें दोनों विंडोज एक्सपी चल रही हैं?

0

जैसा कि अन्य ने कहा है, SqlDateTimeस्थिर कन्स्ट्रक्टर साल सेट करता है। तो जब तक कि आप किसी अन्य निर्माता को बुला रहे हों, वहां कोई स्पष्ट स्पष्टीकरण नहीं है।

static SqlDateTime() 
{ 
    ... 
    MinYear = 1753; 
    ... 
} 

परावर्तक के रूप में 0x6d9

0

एक मामूली स्पर्श पर यह पता चलता है, लेकिन जैसा कि आप एक विशेष मूल्य के रूप में SqlDateTime.MinValue उपयोग कर रहे हैं, मैं तुम्हें एक nullable दिनांक समय के बजाय इस तरह का उपयोग करने का सुझाव चाहते हैं:

DateTime? date = null; 
... 
if (!date.HasValue) 
{ 
    return "(any)"; 
} 
else 
{ 
    return date.Value.ToString(); 
} 

ध्यान दें कि एक शून्य प्रकार के लिए शॉर्टेंड प्रश्न चिह्न का उपयोग कर रहा है: उदाहरण के लिए दिनांक समय?

जैसा कि मैंने अपनी टिप्पणी में कहा था, मुझे आश्चर्य है कि स्ट्रिंग के लिए एक कलाकार है जो ऐसा लगता है कि SqlDateTime.MinValue एक अंतर मान लौटा रहा है, वास्तव में यह स्ट्रिंग के लिए स्वरूपण है जो वास्तव में समस्या है (उदाहरण के लिए क्षेत्रीय सेटिंग)।

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

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