2014-10-19 71 views
0

我正在使用下面的代码在固定的时间显示通知。但它不符合我的输出。在固定的时间显示本地通知,ios?

- (IBAction)bt_set:(id)sender { 

// Setting all the information about our date 
int hour = 8; 
int minutes = 19; 
int day = 19; 
int month = 10; 
int year = 2014; 

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDateComponents *components = [[NSDateComponents alloc] init]; 

[components setDay:day]; 
[components setMonth:month]; 
[components setYear:year]; 
[components setMinute:minutes]; 
[components setHour:hour]; 

NSDate *myNewDate = [calendar dateFromComponents:components]; 
//[components release]; 
//[calendar release]; 

[self scheduleNotificationForDate:myNewDate]; 

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Note" 
               message:@"Alarm has been set" 
               delegate:self 
             cancelButtonTitle:@"OK" 
             otherButtonTitles:nil]; 
[alert show]; 

    } 

这是notfication代码

- (void)scheduleNotificationForDate:(NSDate *)date 
    { 
// Here we cancel all previously scheduled notifications 
[[UIApplication sharedApplication] cancelAllLocalNotifications]; 

UILocalNotification *localNotification = [[UILocalNotification alloc] init]; 

localNotification.fireDate = date; 
NSLog(@"%@",date); 
NSLog(@"Notification will be shown on: %@",localNotification.fireDate); 

localNotification.timeZone = [NSTimeZone defaultTimeZone]; 
localNotification.alertBody = [NSString stringWithFormat:@"Your notification message"]; 
localNotification.alertAction = NSLocalizedString(@"View details", nil); 

/* Here we set notification sound and badge on the app's icon "-1" 
means that number indicator on the badge will be decreased by one 
- so there will be no badge on the icon */ 
localNotification.soundName = UILocalNotificationDefaultSoundName; 
localNotification.applicationIconBadgeNumber = -1; 

[[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; 

}

这是我在日志中获取日期

Notification will be shown on: 2014-10-19 02:49:00 +0000 

我猜它是与时间区。

我有GMT时区+ 5:30

请帮我

+0

对不起,回复迟了。我可以用你的解决方案解决它。日Thnx – WISHY 2014-10-28 05:24:22

回答

1

你有一些(NSDate的*)日期----

添加以下代码,以获得相应的系统时间:

NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; 
NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone]; 

NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:sourceDate]; 
NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:sourceDate]; 
NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset; 

NSDate* destinationDate = [[NSDate alloc] initWithTimeInterval:interval sinceDate:sourceDate];