Я пытаюсь установить будильник.Я нахожусь в Монреале, поэтому в EST Timezone.В коде, который я использую, я получаю текущую дату и пытаюсь заставить ее звонить через несколько минут.Код работает отлично, и будильник зазвонит, как и ожидалось.
Вот проблема: сейчас 12.41.будильник зазвонит в 12.43.Тем не менее, в моем NSLog время печатается: fireDate: 2012-02-16 17:43:00 + 0000
Это не главная проблема, так как она работает, но любая идея опочему это показывает в то время и до сих пор работает?Есть идеи, как это исправить?Спасибо!
Я в основном ставлю часовой пояс везде, вот код, который я использую:
- (void) scheduleNotificationWithInterval: (int) minutesBefore {
// Current date
NSDate *now = [NSDate date];
// Specify which units we would like to use
unsigned units = NSTimeZoneCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit;
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSTimeZone* zone = [NSTimeZone timeZoneWithName:@"EST"];
[calendar setTimeZone:zone];
NSDateComponents *components = [calendar components:units fromDate:now];
[components setTimeZone:[NSTimeZone timeZoneWithName:@"EST"]];
NSInteger year = [components year];
NSInteger month = [components month];
NSInteger day = [components day];
NSInteger hour = [components hour];
NSInteger minute = [components minute];
NSDateComponents *dateComps = [[NSDateComponents alloc] init];
[dateComps setYear:year];
[dateComps setMonth:month];
[dateComps setDay:day];
[dateComps setHour:hour];
[dateComps setMinute:minute+2]; // Temporary
NSDate *itemDate = [calendar dateFromComponents:dateComps];
NSLog(@"fireDate : %@", itemDate);
UILocalNotification *localNotif = [[UILocalNotification alloc] init];
if (localNotif == nil)
return;
localNotif.fireDate = itemDate;
//localNotif.timeZone = zone;
localNotif.timeZone = [NSTimeZone timeZoneWithName:@"EST"];
minutesBefore = 15; // Temporary
localNotif.alertBody = [NSString stringWithFormat:NSLocalizedString(@"%@ in %i minutes.", nil),
@"Blabla", minutesBefore];
localNotif.alertAction = NSLocalizedString(@"See Foo", nil);
localNotif.soundName = UILocalNotificationDefaultSoundName;
NSDictionary *infoDict = [NSDictionary dictionaryWithObject:@"LastCall" forKey:@"lastcall"];
localNotif.userInfo = infoDict;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
}
Спасибо!