我正在尝试重现默认时钟的一些功能,我让用户为闹钟选择重复频率。问题是,不同的NSCalendar设置会为您提供一周中不同的名称。如何以一种方式存储一周中所选的日期,即如果用户更改其日历,则频率始终落在一周的正确日期?
答案 0 :(得分:1)
一种解决方案是检查每次应用程序进入前台时日历是否已更改,如果是,请从那里进行适当的更改。可能不是最优雅的解决方案,也不是最佳实践,但它可以完成工作。
答案 1 :(得分:-2)
取(long) [dateYouWantToRemember timeIntervalSince1970]
并将其存储在属性文件或其他类似文件中。 (您可以使用timeIntervalSinceReferenceDate,但1970年的数字是" UNIX纪元日期"并且更加标准化 - 您可以在线查找转换器以进行检查。)
稍后,在(可能)不同的日历下,执行[NSDate dateWithTimeIntervalSince1970:theLongYouStored]
,您将在新日历中重建日期。
现在使用NSCalendar / NSDateComponents查找该日期的新的序数日,并使用[NSDateFormatter weekdaySymbols]
获取工作日名称列表。使用序号索引列表以获取新的日期名称。使用NSDateComponents对您的日期进行算术运算,根据您的应用的需要选择下一个星期几,即日期。