2012-09-15 7 views
7

मेरे पास मोनो टच ऐप है जो एक webservice से डेटा संसाधित करता है। इस डेटा में दिनांक जानकारी है जो टाइमज़ोन के लिए विशिष्ट है। टाइमज़ोन यूटीसी +12 है जो न्यूजीलैंड के लिए है।डिवाइस टाइमज़ोन के बावजूद किसी विशिष्ट टाइमज़ोन के लिए डेटटाइम.अब प्राप्त करें?

मेरा ऐप वर्तमान समय के आधार पर इस डेटा को प्रदर्शित करता है। इसके साथ समस्या यह है कि जब ऐप का उपयोग विभिन्न टाइमज़ोन में किया जाता है तो डेटा ठीक से प्रदर्शित नहीं होता है क्योंकि डिवाइस पर वर्तमान समय गलत है।

डिवाइस पर लोकेल/टाइमज़ोन सेटिंग के बावजूद मैं यूटीसी +12 के लिए वर्तमान डेटाटाइम कैसे प्राप्त कर सकता हूं?

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

TimeZoneInfo.ConvertTime (DateTime.Now, TimeZoneInfo.FindSystemTimeZoneById("Pacific/Auckland")); 

इस कोड को अपने कंप्यूटर पर ठीक काम करता है लेकिन जब मैं MonoTouch में इसे चलाने मैं निम्नलिखित अपवाद:

मैं नीचे दिए गए उत्तर के आधार पर निम्न कोड की कोशिश की है

System.ArgumentException: Kind propery of dateTime is Local but the sourceTimeZone does not equal TimeZoneInfo.Local 
    at System.TimeZoneInfo.ConvertTime (DateTime dateTime, System.TimeZoneInfo sourceTimeZone, System.TimeZoneInfo destinationTimeZone) [0x00018] in /Developer/MonoTouch/Source/mono/mcs/class/System.Core/System/TimeZoneInfo.cs:179 
    at System.TimeZoneInfo.ConvertTime (DateTime dateTime, System.TimeZoneInfo destinationTimeZone) [0x00000] in /Developer/MonoTouch/Source/mono/mcs/class/System.Core/System/TimeZoneInfo.cs:173 
+0

डेटटाइम के साथ शुरू करें। UtcNow? –

+0

@ लंका: क्या हुआ? आपने अपना जवाब क्यों अस्वीकार कर दिया। क्या आप वांछित नहीं हैं? –

+0

@ निकिल अग्रवाल क्षमा करें लेकिन आपके उत्तर का परीक्षण करने के बाद यह काम नहीं किया। मैंने कोड और अपवाद के साथ अपना प्रश्न अपडेट किया है। – startupsmith

उत्तर

3

यह मोनो टच में bug है।

फ़िक्स को मोनो टच के भविष्य के संस्करण में शामिल किया जाएगा (मुझे अभी तक बिल्कुल पता नहीं है)।

किसी भी मामले में पहले से ही a hotfix उपलब्ध है।

20

DateTime.Now का उपयोग करें। यह आपको सिस्टम टाइमज़ोन दिनांक और समय देगा। अब इस

var indianTime = TimeZoneInfo.ConvertTime (DateTime.Now, 
       TimeZoneInfo.FindSystemTimeZoneById("India Standard Time")); 

तरह वांछित समय क्षेत्र-समय पर उस समय परिवर्तित समयक्षेत्र की सूची इस विधि

ReadOnlyCollection<TimeZoneInfo> zones = TimeZoneInfo.GetSystemTimeZones(); 
Console.WriteLine("The local system has the following {0} time zones", zones.Count); 
foreach (TimeZoneInfo zone in zones) 
    Console.WriteLine(zone.Id); 
+3

एमएसएफटी समय क्षेत्र की सूची: https://msdn.microsoft.com/en-us/library/ms912391(v=winembedded.11).aspx – RJB

10

चलाने प्राप्त करने के लिए आप इसे पसंद कर सकते हैं:

Datetime date = TimeZoneInfo.ConvertTime(utcDateTime, timeZone); 

बस दिए गए मापदंडों पारित ।

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