2011-01-18 13 views
5

मैं अपने कोरडाटा स्टोर में दिनांक और समय रखता हूं और मूल रूप से दर्ज किए गए समय के लिए उपयोगकर्ताओं को सटीक रूप से प्रस्तुत करने की आवश्यकता होती है। समस्या यह है कि यदि वे पूर्वी तट पर 4:00 बजे प्रवेश करते हैं, तो बाद में वेस्ट कोस्ट पर दर्ज किए गए समय को देखते हैं, यह 1:00 के रूप में दिखाई देता है, क्योंकि आईफोन स्थानीय समय पर सार्वभौमिक समय का अनुवाद करता है। मुझे इसे 4:00 दिखाने की ज़रूरत है - शायद 4:00 (+ 3h00)।क्या एनएसडीएटी कोरडाटा में समय क्षेत्र को समाहित करता है?

इससे पहले कि मैं जाने के लिए और पुनर्गठन मेरी कोर डाटा मॉडल, मैं वहाँ NSTimeZone कि एक संग्रहीत NSDate वस्तु से निर्माण समय पर सक्रिय था प्राप्त करने के लिए कोई रास्ता नहीं है सुनिश्चित हो करना चाहते हैं। है? यदि नहीं, तो निर्माण की समय पर एनएसटीमेज़ोन को कैप्चर करने के लिए कोई सिफारिश कैसे करें? एक एनएसएनंबर जीएमटी से निर्माण समय NSTimeZone समय अंतर का प्रतिनिधित्व करता है?

धन्यवाद।

+1

महान सवाल! यह एक क्लासिक भ्रम है। संक्षिप्त जवाब नहीं है।' –

उत्तर

8

जैसा कि आपने पाया है, एनएसडीएटी समय पर एक सार्वभौमिक बिंदु का प्रतिनिधित्व करता है और इसमें विशिष्ट समय क्षेत्र की जानकारी शामिल नहीं है।

मैं ऑफसेट को स्टोर करने के बजाय सुझाव देना चाहता हूं, एनएसटीमेज़ोन की name संपत्ति स्टोर करें। फिर आप समय क्षेत्र प्राप्त करने के लिए +[NSTimeZone timeZoneWithName:] का उपयोग कर सकते हैं और फिर इसे स्थानीय समय में परिवर्तित कर सकते हैं। यह आपको अधिकतम लचीलापन देता है कि आप उपयोगकर्ता को जानकारी कैसे प्रदर्शित करते हैं।

+0

+1 'एनएसडीएटी' के साथ फूट करने की कोशिश नहीं करने के लिए +1! समय क्षेत्र जानकारी को अलग से संग्रहीत करना निश्चित रूप से जाने का तरीका है। –

+0

ज्यादातर मामलों में आप जीएमटी के रूप में तारीख को स्टोर कर सकते हैं और उपयोगकर्ताओं को स्थानीय टाइमज़ोन में रूपांतरण कर सकते हैं जब आपको जानकारी प्रदर्शित करने की आवश्यकता होती है। –

+0

धन्यवाद! यह एक अच्छा दृष्टिकोण की तरह लगता है, सिवाय इसके कि मुझे नहीं लगता कि नाम संपत्ति डेलाइट सेविंग्स टाइम ऑफसेट को कैप्चर करती है। शायद एक वास्तविक किनारे का मामला, लेकिन यह संभव नहीं है कि मैं एक यूरोपीय समय क्षेत्र के नाम का उपयोग अमेरिकी के रूपांतरण के आधार के रूप में कर सकता हूं, और रूपांतरण गलत हो सकता है क्योंकि उस समय के दौरान समय क्षेत्र ऑफ़सेट असामान्य था या दो unsync'ed डीएसटी? हो सकता है कि प्रवेश के समय जीएमटी से ऑफ़सेट कैप्चर करना सबसे अच्छा हो? मुझे लगता है कि मैं सिर्फ उपयोगकर्ता जानकारी के लिए समय क्षेत्र का नाम या संक्षेप भी संग्रहीत कर सकता हूं। – ed94133

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