2016-05-02 5 views
23

के साथ ठीक से काम नहीं कर रहा है मैं settings plugin का उपयोग कर रहा हूं और मेरे पास कुछ बूलियन स्टोर करने के लिए काम कर रहा है। अब मैं डेटटाइम ऑब्जेक्ट को प्रबंधित करना चाहता था।सेटिंग्स प्लगइन डेटटाइम संपत्ति

DateTime dt = new DateTime(); 
Debug.WriteLine(dt.ToString()); 
dt = dt.AddMinutes(30); 
Debug.WriteLine(dt.ToString()); 
Settings.TimeRemaining = dt; 
Debug.WriteLine(Settings.TimeRemaining.ToString()); 

यह प्रिंट: जब मैं कुछ लॉगिंग मैं इस किया था जोड़ा

Settings.TimeRemaining = new DateTime().AddMinutes(30); 

:

private const string TimeRemainingKey = "time_remaining"; 
private static readonly DateTime TimeRemainingDefault = DateTime.Now; 

public static DateTime TimeRemaining 
{ 
    get 
    { 
     return AppSettings.GetValueOrDefault(TimeRemainingKey, TimeRemainingDefault); 
    } 
    set 
    { 
     AppSettings.AddOrUpdateValue(TimeRemainingKey, value); 
    } 
} 

मूल रूप से मैं अपने कोड में निम्नलिखित प्रयोग किया है: मैं Settings.cs के लिए निम्न जोड़ा आउट:

1/1/0001 12:00:00 पूर्वाह्न

1/1/0001 12:30:00 पूर्वाह्न

1/1/0001 12:00:00 पूर्वाह्न

क्यों इस व्यवहार हो जाता है?

+0

आप दिनांक समय वस्तु बनाया है, लेकिन आप एक मूल्य के साथ आरंभ नहीं किया है। तो यह न्यूनतम डेटटाइम मान लेता है। – Mainak

+4

@ मेनक यह मुद्दा नहीं है। वह एक सेटिंग अद्यतन करता है और जब वह इसे फिर से पढ़ता है, तो अपडेट समाप्त हो जाते हैं। लघु संस्करण 'सेटिंग = डीटी' लेकिन बाद में' डीटी! = सेटिंग '। –

+0

जब आप करते हैं तो क्या होता है: 'सेटिंग्स। टाइमरमेनिंग = सेटिंग्स। टाइमरमेनिंग। एडमिनेशन (30); System.Diagnostics.Debug.WriteLine (सेटिंग्स.TimeRemaining.ToString()); ' क्या यह तब काम करता है, या क्या एक ही त्रुटि होती है? – Draken

उत्तर

14

सेटिंग्स प्लगइन converts the DateTime to UTC इसलिए यह आपके टाइमज़ोन में दिखता है जब यह 1/1/0001 12:30:00 पूर्वाह्न को यूटीसी में परिवर्तित करता है तो यह 1/1/0001 12:00:00 पूर्वाह्न हो जाता है। नतीजतन जब मूल्य सेटिंग्स से वापस पढ़ा जाता है तो आपको 1/1/0001 12:00:00 पूर्वाह्न मिलता है।

आप अपनी तिथि के लिए Kind सेट करते हैं प्लगइन सही ढंग से काम करना चाहिए:

Settings.TimeRemaining = DateTime.SpecifyKind(new DateTime().AddMinutes(30), DateTimeKind.Utc); 
+0

'DateTimeKind.Utc' का उपयोग करते समय यह अपेक्षित के रूप में काम करता था। धन्यवाद! – Nfear

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