मैं सिर्फ आईओएस 6.1.3 पर कुछ परीक्षण भाग गया। (, प्रशांत डेलाइट समय जीएमटी -7),
मैं सिएटल में हूँ 1:00 पर: यहाँ मैं क्या मिला है।
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
// 2013-08-31 @ 12:00:00 (noon)
dateComponents.year = 2013;
dateComponents.month = 8;
dateComponents.day = 31;
dateComponents.hour = 12;
dateComponents.minute = 0;
dateComponents.second = 0;
NSDate *fireDate = [gregorianCalendar dateFromComponents:dateComponents];
अब मैं
fireDate = 2013-08-31 19:00:00 +0000 (2013-08-31 12:00:00 -0700)
तब मैं बनाया और सूचनाएं निर्धारित नहीं की:: मैं एक NSDate
बनाया सिएटल (प्रशांत डेलाइट समय में
notification1 = [[UILocalNotification alloc] init];
notification1.fireDate = fireDate;
// notification1.timeZone is nil by default
NSLog(@"%@", notification1);
notification2 = [[UILocalNotification alloc] init];
notification2.fireDate = fireDate;
notification2.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSLog(@"%@", notification2);
notification3 = [[UILocalNotification alloc] init];
notification3.fireDate = fireDate;
notification3.timeZone = [NSTimeZone defaultTimeZone];
NSLog(@"%@", notification3);
सूचनाएं अभी बनाया का लॉग्स, , जीएमटी -7):
notification1:
fire date = Saturday, August 31, 2013, 12:00:00 PM Pacific Daylight Time,
time zone = (null),
next fire date = Saturday, August 31, 2013, 12:00:00 PM Pacific Daylight Time
notification2:
fire date = Saturday, August 31, 2013, 7:00:00 PM GMT,
time zone = GMT (GMT) offset 0,
next fire date = Saturday, August 31, 2013, 7:00:00 PM Pacific Daylight Time
notification3:
fire date = Saturday, August 31, 2013, 12:00:00 PM Pacific Daylight Time,
time zone = US/Pacific (PDT) offset -25200 (Daylight),
next fire date = Saturday, August 31, 2013, 12:00:00 PM Pacific Daylight Time
मैंने फोन के टाइमज़ोन को शिकागो में बदल दिया, जहां अब यह 3:00 बजे (सेंट्रल डेलाइट टाइम, जीएमटी -5) है।
सूचनाओं के लॉग्स, शिकागो में (केन्द्रीय डेलाइट समय, GMT-5)
notification1:
fire date = Saturday, August 31, 2013, 2:00:00 PM Central Daylight Time,
time zone = (null),
next fire date = Saturday, August 31, 2013, 2:00:00 PM Central Daylight Time
notification2:
fire date = Saturday, August 31, 2013, 7:00:00 PM GMT,
time zone = GMT (GMT) offset 0,
next fire date = Saturday, August 31, 2013, 7:00:00 PM Central Daylight Time
notification3:
fire date = Saturday, August 31, 2013, 12:00:00 PM Pacific Daylight Time,
time zone = US/Pacific (PDT) offset -25200 (Daylight),
next fire date = Saturday, August 31, 2013, 12:00:00 PM Central Daylight Time
निष्कर्ष:
- UILocalNotification
timeZone
नहीं के बराबर है जब, आग दिनांक समय में तय हो गई है। इसका मतलब है कि अधिसूचना 12:00 बजे जीएमटी -7, 2:00 अपराह्न GMT-5, या 7:00 GMT पर निकाल दी जाएगी।
- जब UILocalNotification
timeZone
जीएमटी पर सेट है, तो आग की तारीख जीएमटी समय के लिए गणना की जाती है और यदि उपयोगकर्ता किसी अन्य समय क्षेत्र में जाता है तो स्वतः अपडेट हो जाएगा। इस उदाहरण में, 12:00 जीएमटी -7 का समय 1 9: 00 जीएमटी में परिवर्तित कर दिया गया था, और अधिसूचना 1 9:00 स्थानीय समय पर निर्धारित की गई थी, जो भी समय क्षेत्र हम हैं (1 9: 00 जीएमटी, 1 9: 00 जीएमटी -5 या 1 9: 00 जीएमटी -7)।
- जब UILocalNotification
timeZone
स्थानीय समय क्षेत्र (प्रशांत डेलाइट टाइम, जीएमटी -7) पर सेट है, तो आग की तारीख स्थानीय समय के लिए गणना की जाती है और यदि उपयोगकर्ता किसी अन्य समय क्षेत्र में जाता है तो स्वतः अपडेट हो जाएगा। इस उदाहरण में, समय 12:00 जीएमटी -7 था, इसलिए अधिसूचना 12:00 स्थानीय समय पर निकाल दी जाएगी, जो भी समय क्षेत्र हम हैं (12:00 जीएमटी, 12:00 जीएमटी -5 या 12:00 जीएमटी- 7)।
बहुत बढ़िया। तकनीकी रूप से आपने इसे दोपहर के बजाय 7 पीएम जीएमटी के लिए निर्धारित किया है, लेकिन यह सवाल भी जवाब देता है। –
क्या किसी के पास आईओएस 10 में यूएन नोटिफिकेशन ट्रिगर तिथियों के बारे में एक समान जांच है? – Jonny
@ जॉनी मैं भी सोच रहा हूं। ऐसा लगता है कि टाइमज़ोन को कोई फर्क नहीं पड़ता है। – David