Местное уведомление увольняется примерно за 2 часа. Дата, когда я установил ее для стрельбы на выставках 2013-12-13 17:00:00 +0000Локальное уведомление об увольнении в неподходящее время
Однако мой телефон снял мне уведомление в 15:00:00. Я хочу, чтобы он срабатывал в локальное время пользователей. Как настроить дату, чтобы она срабатывала в локальном часовом поясе пользователей ... т. Е. независимо от того, где вы находитесь в США, он стреляет в 17:00:00?
Вот поездка моего NSDate. Я разбираю XML-файл. Из PubDate тега:
NSDate *articleDate = [NSDate dateFromInternetDateTimeString:articleDateString formatHint:DateFormatHintRFC822];
NSString *articleImage = [item valueForChild:@"description"];
NSDateFormatter * dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
NSString *dateofarticle = [dateFormatter stringFromDate:articleDate];
NSDate *date = [dateFormatter dateFromString:dateofarticle];
дата NSDate * добавляется к свойству из пользовательского класса я настроил, чтобы хранить все от каждого элемента XML. Таким образом, NSDate, который привыкает к уведомлению, - это. Когда я устанавливаю уведомление, я не корректирую NSDate.
От напоминания UIActivity:
- (void)prepareWithActivityItems:(NSArray *)activityItems
{NSLog(@"works");
Class cls = NSClassFromString(@"UILocalNotification");
if (cls != nil) {
NSString *message = [@"5 minutes until " stringByAppendingString:self.thetitle];
UILocalNotification *notif = [[cls alloc] init];
// NSLog(@"%@", self.thedate);
NSDate *newDate = [self.thedate dateByAddingTimeInterval:-60*5];
NSDateFormatter *formatter3 = [[NSDateFormatter alloc] init];
[formatter3 setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
[formatter3 setTimeStyle:NSDateFormatterShortStyle];
[formatter3 setDateStyle:NSDateFormatterShortStyle];
NSString *detailstext = [formatter3 stringFromDate:newDate];
NSDate *othernewdate = [formatter3 dateFromString:detailstext];
NSLog(@"other%@", othernewdate);
notif.timeZone = [NSTimeZone systemTimeZone];
notif.fireDate = othernewdate;
//NSLog(@"newdate%@", newDate);
notif.alertBody = message;
notif.alertAction = @"Ok";
notif.soundName = UILocalNotificationDefaultSoundName;
notif.applicationIconBadgeNumber = 1;
notif.repeatInterval = 0;
NSDictionary *userDict = [NSDictionary dictionaryWithObject:message
forKey:kRemindMeNotificationDataKey];
notif.userInfo = userDict;
[[UIApplication sharedApplication] scheduleLocalNotification:notif];
[self.notifications addObject:notif];
[notif release];
}
NSLog(@"Test");
[self activityDidFinish:YES];
}
- (void)showReminder:(NSString *)text {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Reminder"
message:text delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
[alertView release];
}
NSLog (@ "% @ другой", othernewdate); показывает как 2013/12/13 16:55:00 +0000 в консоли. Я в Центральном часовом поясе.
ОБНОВЛЕНИЕ # 2 В той области, где запланировано уведомление, я выполняю некоторые тесты. Я изменил XML pubDate, чтобы показать -0600 по прошествии времени, чтобы он оставался центральным временем. Я запускаю этот код и журналы.
NSDateFormatter *formatter3 = [[NSDateFormatter alloc] init];
[formatter3 setTimeStyle:NSDateFormatterShortStyle];
[formatter3 setDateStyle:NSDateFormatterShortStyle];
NSString *detailstext = [formatter3 stringFromDate:self.thedate];
NSDate *othernewdate = [formatter3 dateFromString:detailstext];
NSLog(@"details%@", detailstext);
NSLog(@"other%@", othernewdate);
Строка показывает правильную дату и время на данном входе:
details12/27/13, 3:00 вечера
NSDate показывает это. Итак, мой вопрос в этом. С того времени ниже технически то же время ... должен огонь уведомление правильно ?:
other2013-12-27 21:00:00 +0000
Я хочу, чтобы он стрелял в 17:00 независимо от того, где вы находитесь. Когда наступает 5 часов, срабатывает уведомление. Однако даже настройка часового пояса на systemTimeZone не сработала для меня. – user717452
Как вы устанавливаете дату? Если вы напечатаете объект «NSDate» в отладчике, он отображается в часовой пояс GMT, поэтому не доверяйте тому, что там говорит. –
См. Вышеизложенное для получения дополнительной информации, поскольку это слишком долго, чтобы добраться сюда. – user717452