2010-09-07 15 views
15

पर एनएसडीएट सेट करना मुझे किसी आईफोन ऐप के लिए किसी विशिष्ट दिनांक, समय और समय क्षेत्र में एनएसडीएट सेट करने की आवश्यकता है।विशिष्ट दिनांक, समय और टाइमज़ोन

नीचे दिया गया उदाहरण कोड आईओएस 4 पर ठीक काम करता है क्योंकि सेटटाइमज़ोन आईओएस 4 के साथ पेश किया गया था। मैं सेटटाइमज़ोन का उपयोग किये बिना किसी दिनांक, समय और टाइमज़ोन में आसानी से एनएसडीएट कैसे सेट कर सकता हूं ताकि इसका उपयोग आईओएस 3.0 उपकरणों पर किया जा सके?

NSDateComponents *comps = [[NSDateComponents alloc] init]; 
[comps setYear:2010]; 
[comps setMonth:8]; 
[comps setDay:24]; 
[comps setHour:17]; 
[comps setMinute:5]; 
[comps setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"] ]; 

NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDate *referenceTime = [cal dateFromComponents:comps]; 

अनुमान इस NSDate, घटकों और कैलेंडर सरल होना चाहिए, लेकिन किसी भी तरह और मैं अच्छे दोस्त है में और स्वयं के समय क्षेत्र की कोई अवधारणा नहीं हैं ...

उत्तर

3

मुझे आश्चर्य है कि आप NSCalendar उद्देश्य यह है कि आप NSDateComponents से NSDate बनाने के लिए उपयोग पर समय क्षेत्र सेट कर सकता है। मैंने यह कोशिश नहीं की है और यह नहीं पता कि यह काम करेगा या नहीं, लेकिन शायद यह एक कोशिश के लायक है।

+0

धन्यवाद! मैंने बस comps के लिए setTimeZone को हटा दिया और कैल के लिए एक जोड़ा, [cal setTimeZone: [NSTimeZone timeZoneWithAbataka: @ "UTC"]]; और यह मुझे एक ही परिणाम देने के ठीक ठीक काम करता है। महान! – Structurer

3

NDates। जीएमटी में एक निश्चित मनमाने ढंग से तारीख के बाद वे मूल रूप से सेकंड हैं। इस प्रकार, आप उन्हें एक समय क्षेत्र नहीं दे सकते हैं। यदि समय क्षेत्र महत्वपूर्ण है, तो आपको समय और समय क्षेत्र दोनों को ट्रैक करना होगा।

+0

आपके उत्तर के लिए धन्यवाद बेन। मैंने अपनी परिकल्पना का परीक्षण करने के लिए क्या किया है सेटटाइमज़ोन के साथ लाइन को हटाना है। जब मैं करता हूं तो वर्तमान समय के लिए NSDate timeIntervalSinceDate का उपयोग करते समय मुझे एक अलग परिणाम मिलता है। हो सकता है कि आप सही हैं कि एनएसडीएटी को टाइमज़ोन की परवाह नहीं है, लेकिन NSDateComponents का उपयोग करके इसे सेट करना अलग-अलग परिणाम देता है यदि मेरे पास सेटटाइमज़ोन है या नहीं। उम्मीद है कि यह समझ में आता है? – Structurer

+0

NSDateComponents समय क्षेत्र को ट्रैक करता है ... यह एनएसडीएटी की तुलना में बहुत भारी वजन वर्ग है। –

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