我想我可以通过使用NSCalendarNSDateComponents来实现我想要的目标,但这将运行如下操作:
得到“现在”
从“现在”开始创建一个NSDateComponents
如果“现在”是早7点之前的,则使用今天的日期。
如果“现在”是早上7点以后,用明天的日期。
如果今天是一个月的最后一天,则增加月份,将日期设置为1。
如果是12月,则每年增加1。
设定小时,分钟,秒。
创建一个新的NSDate
这一切似乎都很冗长,但这似乎是这里的其他答案所暗示的,而且文档并没有提供任何线索。我在所有我能找到的日期和日历类之间来回走动。
有没有一个简单的方法来要求“下一次发生的7点”?

最佳答案

我还没试过,但我想这是可行的:
现在开始约会。
从现在开始创建NSDateComponents
将“小时”组件设置为7。
将7AM日期组件转换回NSDate
如果早上7点的约会比现在晚,你就完了。
否则,使用-[NSCalendar dateByAddingComponents:options:]将上午7点的日期提前一天。
我不确定最后一步是否会做正确的事情,如果夏时制改变发生在上午7点和下一个。

07-28 12:08