我正在使用这个应用程序 here 它适用于我,但我想手动插入本地通知的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)];
但它不适用于我。
提前感谢。
答案 0 :(得分:2)
使用NSDateFormatter,您可以直接从NSString
转换为NSDate
。这是一个例子:
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];
答案 1 :(得分: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:
搜索不多后,我发现{4}中的addTimeInterval
已被弃用。相反,您应该使用dateByAddingTimeInterval
。
localNotif.fireDate = [itemDate dateByAddingTimeInterval:-(minutesBefore*60)];
向dateByAddingTimeInterval
提供负值会将通知时间提前发送到itemDate
。