如何在明天早上8点创建一个日期对象

Jas*_*man 2 objective-c nsdate nsdatecomponents uilocalnotification

我通常对此很好,但我遇到了这个问题NSDate.我需要NSDate明天早上8点(相对)设置一个对象.我该怎么做?什么是最简单的方法?

Joh*_*uer 14

以下是WWDC 2011 session 117 - 执行日历计算的方法:

NSDate* now = [NSDate date] ;

NSDateComponents* tomorrowComponents = [NSDateComponents new] ;
tomorrowComponents.day = 1 ;
NSCalendar* calendar = [NSCalendar currentCalendar] ;
NSDate* tomorrow = [calendar dateByAddingComponents:tomorrowComponents toDate:now options:0] ;

NSDateComponents* tomorrowAt8AMComponents = [calendar components:(NSEraCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit) fromDate:tomorrow] ;
tomorrowAt8AMComponents.hour = 8 ;
NSDate* tomorrowAt8AM = [calendar dateFromComponents:tomorrowAt8AMComponents] ;
Run Code Online (Sandbox Code Playgroud)

太糟糕的iOS没有[NSDate dateWithNaturalLanguageString:@"tomorrow at 8:00 am"].谢谢,rmaddy,指出了这一点.

  • 根据标签,这个问题似乎适用于iOS.`dateWithNaturalLanguageString:`方法仅适用于OSX,而​​不适用于iOS. (2认同)