0

我在 这里使用这个应用程序, 它对我很好,但我想手动插入本地通知的 fireDate,而不是使用 datePicker。

notif.fireDate = [datePicker date];

如何手动插入日期(日、月、年、小时和分钟)?

我尝试了以下

NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];
NSDateComponents *dateComps = [[NSDateComponents alloc] init];
[dateComps setDay:10];
[dateComps setMonth:3];
[dateComps setYear:2013];
[dateComps setHour:4];
[dateComps setMinute:45];
NSDate *itemDate = [calendar dateFromComponents:dateComps];

int minutesBefore = 2;
notif.fireDate = [itemDate addTimeInterval:-(minutesBefore*60)];

但它不适用于我。

提前致谢。

4

2 回答 2

2

使用NSDateFormatter您可以直接从 a 转换NSStringNSDate. 这是一个例子:

NSDateFormatter* myFormatter = [[NSDateFormatter alloc] init];
[myFormatter setDateFormat:@"MM/dd/yyyy"];
NSDate* myDate = [myFormatter dateFromString:@"8/26/2012"];
NSLog(@"%@", myDate);  

编辑
如果你也想要时间

NSString *str =@"3/15/2012 9:15 PM";
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"MM/dd/yyyy hh:mm a"];
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[formatter setTimeZone:gmt];
NSDate *date = [formatter dateFromString:str];

NSLog(@"%@",date);  

点击此链接了解更多信息SO Answer

而对于 localNotification 也只需在开火日期后实施

UIApplication *app=[UIApplication sharedApplication];
[app scheduleLocalNotification:localNotification];
于 2013-03-11T14:44:41.267 回答
0

怎么用addTimeInterval

UILocalNotification *localNotif = [[UILocalNotification alloc] init];
localNotif.fireDate = [itemDate addTimeInterval:-(minutesBefore*60)]; 

 //minutesBefore will be type of int and itemDate would be of NSDate type.

更新1:

经过一番搜索后,我发现addTimeInterval在 iOS 4 及以后版本中已弃用。相反,您应该使用dateByAddingTimeInterval.

 localNotif.fireDate = [itemDate dateByAddingTimeInterval:-(minutesBefore*60)]; 

提供负值将提前dateByAddingTimeInterval几分钟触发通知itemDate

于 2013-03-11T14:44:12.310 回答