编辑的07/08/13:苹果公司有一套非常好的WWDC视频,它确实帮助我理解了目标C中的各种日期和时间类,以及如何正确地使用它们执行时间计算/操作。
(高清视频, SD视频, 幻灯片(PDF)) (WWDC 2013)
“执行日历计算”( (SD视频, 幻灯片(PDF)) (WWDC 2011)
注意:链接需要免费的苹果开发者会员资格。
我在为朋友的播客写一个应用程序。她每个周日下午5点都会直播她的节目,我想在我的应用程序中写一些代码,可以选择在那个时候安排一个本地通知,这样用户就会被提醒下一个直播节目是什么时候。我将如何获得一个NSDate对象,表示“下一个星期日,下午5点太平洋时间”。(显然,这必须转换为用户正在使用的任何时区)
发布于 2012-10-10 23:04:52
一周中的第一天:
NSDate *now = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *dateComponents = [calendar components:NSCalendarUnitWeekday | NSCalendarUnitHour fromDate:now];
NSInteger weekday = [dateComponents weekday];苹果文档将工作日定义为:
工作日单位是数字1到n,其中n是一周中的天数。例如,在公历中,n为7,而星期日为1。
下一次计算出下个星期天5点要增加多少天:
NSDate *nextSunday = nil;
if (weekday == 1 && [dateComponents hour] < 5) {
// The next Sunday is today
nextSunday = now;
} else {
NSInteger daysTillNextSunday = 8 - weekday;
int secondsInDay = 86400; // 24 * 60 * 60
nextSunday = [now dateByAddingTimeInterval:secondsInDay * daysTillNextSunday];
}为了在5:00获得它,您可以将nextSunday上的时间和分钟更改为5:00。看看从[NSDate日期]获取当前日期,但将时间设置为上午10:00
https://stackoverflow.com/questions/12829705
复制相似问题