首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式获得“下星期日下午5点”的日期

以编程方式获得“下星期日下午5点”的日期
EN

Stack Overflow用户
提问于 2012-10-10 22:55:14
回答 1查看 2.4K关注 0票数 5

编辑的07/08/13:苹果公司有一套非常好的WWDC视频,它确实帮助我理解了目标C中的各种日期和时间类,以及如何正确地使用它们执行时间计算/操作。

(高清视频 SD视频 幻灯片(PDF)) (WWDC 2013)

“执行日历计算”( (SD视频 幻灯片(PDF)) (WWDC 2011)

注意:链接需要免费的苹果开发者会员资格。

我在为朋友的播客写一个应用程序。她每个周日下午5点都会直播她的节目,我想在我的应用程序中写一些代码,可以选择在那个时候安排一个本地通知,这样用户就会被提醒下一个直播节目是什么时候。我将如何获得一个NSDate对象,表示“下一个星期日,下午5点太平洋时间”。(显然,这必须转换为用户正在使用的任何时区)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-10 23:04:52

一周中的第一天:

代码语言:javascript
复制
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点要增加多少天:

代码语言:javascript
复制
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

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12829705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档