Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用NSCalendar一个月内的最大天数_Ios_Objective C_Cocoa_Nscalendar - Fatal编程技术网

Ios 使用NSCalendar一个月内的最大天数

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日返回 从我所能

我试图创建一个日/月UIPickerView,而不是年份。目标是选择一天/一个月,列出当天/月发生的历史事件

[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只是公历的一个例子。你的预编译建议看起来像是前进的方向。