Ios 使用NSCalendar一个月内的最大天数
我试图创建一个日/月UIPickerView,而不是年份。目标是选择一天/一个月,列出当天/月发生的历史事件Ios 使用NSCalendar一个月内的最大天数,ios,objective-c,cocoa,nscalendar,Ios,Objective C,Cocoa,Nscalendar,我试图创建一个日/月UIPickerView,而不是年份。目标是选择一天/一个月,列出当天/月发生的历史事件 [NSCalendar currentCalendar]maximumRangeOfUnit:NSCalendarUnitDay] 将获得任何月份的最大天数,即公历中的31天。我真正想要的是一种类似于 [calendar maximumRangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarMonth unit:2] 公历2月29日返回 从我所能
[NSCalendar currentCalendar]maximumRangeOfUnit:NSCalendarUnitDay]
将获得任何月份的最大天数,即公历中的31天。我真正想要的是一种类似于
[calendar maximumRangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarMonth unit:2]
公历2月29日返回
从我所能看到的,close唯一有一个forDate:这是没有帮助的。一个快速的解决方法是将其用于8年范围内的日期(以处理非闰年世纪),但这不适用于具有不同闰年规则的其他日历类型
关于如何实现这一点有什么建议吗?
NSCalendar
不会直接提供您想要的功能。由于您希望支持其他日历,因此最好的选择确实是循环使用许多纪元/年/月组合,调用-[NSCalendar rangeOfUnit:inUnit:forDate:
。八年是不够的,因为(例如)希伯来历法(我相信)是一个19年的周期
,所以你应该改变年代以及年份和月份
如果这是昂贵的,您可以编写一个命令行程序来执行此操作,并为嵌入到应用程序中的表发出源代码。然后,可以将该程序作为预编译构建步骤运行
如果您有适当的权限访问历史事件数据库,另一种方法是查找数据库中实际使用的每个日期,并确保您的范围涵盖这些日期。您能稍微扩展一下在选择器中显示的内容以及如何使用它吗?您的选取器是否显示年份以及日期和月份?如前所述,日期/月份,根本不显示年份,如果包含年份,则问题将不存在,因为现有的UIDatePicker可以使用,或者forDate:消息将解决问题。@DavidKnight-我相信他的问题是,他希望2月29日,不管他是否在2017年2月1日(只有28天)做了这件事(因此他评论重复这件事8年,但担心这对非公历来说可能不够)。如果可能的话,我想支持非公历,因此这个问题。是的,8只是公历的一个例子。你的预编译建议看起来像是前进的方向。