gpt4 book ai didi

objective-c - 以编程方式获取日期 "next Sunday at 5PM"

转载 作者:可可西里 更新时间:2023-11-01 04:14:29 29 4
gpt4 key购买 nike

2013 年 7 月 8 日编辑:Apple 拥有一组出色的 WWDC 视频,这些视频真正帮助我理解了 Objective-C 中的各种日期和时间类,以及如何使用它们正确地执行时间计算/操作。

“常见日期和时间挑战的解决方案”(HD videoSD videoslides (PDF))(WWDC 2013)
“执行日历计算”(SD videoslides (PDF))(WWDC 2011)

注意:链接需要免费的 Apple Developer 成员(member)资格。

我正在为 friend 的播客编写应用程序。她每周日下午 5 点直播她的节目,我想在我的应用程序中编写一些代码来选择在该时间安排本地通知,以便提醒用户下一场直播节目的时间。我将如何获得代表“太平洋时间下周日下午 5 点”的 NSDate 对象。 (显然这必须转换成用户使用的任何时区)

最佳答案

首先获取当前星期几:

NSDate *now = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];

NSDateComponents *dateComponents = [calendar components:NSCalendarUnitWeekday | NSCalendarUnitHour fromDate:now];
NSInteger weekday = [dateComponents weekday];

Apple docs将工作日定义为:

Weekday units are the numbers 1 through n, where n is the number of days in the week. For example, in the Gregorian calendar, n is 7 and Sunday is represented by 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。看看get current date from [NSDate date] but set the time to 10:00 am

关于objective-c - 以编程方式获取日期 "next Sunday at 5PM",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12829705/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com