gpt4 book ai didi

ios - Objective-C 月末通知

转载 作者:行者123 更新时间:2023-11-29 12:48:09 25 4
gpt4 key购买 nike

我的应用程序中有一个通知系统,允许用户设置多个通知,它们可以是:

  • 每日
  • 每周
  • 每月

前两个没问题,但第三个我有问题。假设我们在三月,用户将通知设置为在该月的 31 日触发。通知安排正确,但如果我们在 4 月(30 天),例如通知安排在 5 月 1 日。

我有两个问题:

  • 如何安排在每个月的最后一天通知?或者安排他们在接下来的几个月中妥善处理此案。
  • 如果 3 月 31 日的通知安排正确,下一次通知会安排在 4 月 30 日,然后是 5 月 31 日吗?我的猜测是不,将是 3 月 31 日、4 月 1 日和 4 月 31 日。

安排多个通知对我来说不是一个选项,因为苹果有一个限制,如果用户每月有 6 个通知 (6x12),并且他们可能有更多通知,则可以轻松达到该限制。

谢谢,

塞尔吉奥

编辑

抱歉,我没有正确解释自己。我在正确的日期设置通知没有问题。但是我对重复的工作方式有疑问。如果我将通知设置为从 3 月 31 日开始的每个月的 31 日触发(假设我们在 3 月),第一个通知将在正确的一天出现,但 4 月会发生什么?

再次感谢。

最佳答案

您可以使用以下方法获取特定日期所在月份的最后一天

-(NSDate*)lastDayOfMonthOfDate:(NSDate *)date
{
NSInteger dayCount = [self numberOfDaysInMonthCountForDate:date];

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

[calendar setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];

NSDateComponents *comp = [calendar components:
NSYearCalendarUnit |
NSMonthCalendarUnit |
NSDayCalendarUnit fromDate:date];

[comp setDay:dayCount];

return [calendar dateFromComponents:comp];
}

-(NSInteger)numberOfDaysInMonthCountForDate:(NSDate *)date
{
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

[calendar setTimeZone:[NSTimeZone timeZoneWithName:TIMEZONE]];

NSRange dayRange = [calendar rangeOfUnit:NSDayCalendarUnit
inUnit:NSMonthCalendarUnit
forDate:date];

return dayRange.length;
}

从这些方法中找到最后一天并安排当天的通知

来源:Getting the last day of a month

关于ios - Objective-C 月末通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23124305/

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