在Cocoa中获取"将要发生的下一个7am"的NSDate表示的最简单方法是什么?

Dra*_*rok 3 macos cocoa objective-c

我想,我能达到我想要使用NSCalendarNSDateComponents,但会运行类似以下内容:

  • 得到"现在"
  • NSDateComponents从"现在" 创建一个.
  • 如果"现在"是早上7点之前,那么使用今天的日期.
  • 如果"now"是早上7点之后,请使用明天的日期.
    • 如果今天是该月的最后一天,请增加月份,将日期设置为1.
      • 如果是12月,也将年增加1.
  • 设置小时,分钟,秒.
  • 创建一个新的NSDate.

这一切看起来都很啰嗦,但这似乎是这里的其他答案所暗示的,而且文档没有提供任何线索.我会在我能找到的所有日期和日历类之间来回走动.

有没有一种简单的方法可以要求"下一个发生在早上7点"?

JWW*_*ker 5

我没有尝试过,但我认为这样可行:

  • 立即获取日期.
  • NSDateComponents从现在开始创建.
  • 将小时组件设置为7.
  • 将7am日期组件转换回NSDate.
  • 如果早上7点的日期晚于现在,那么你已经完成了.
  • 否则,使用-[NSCalendar dateByAddingComponents:options:]将7am日期提前一天.

如果在上午7点到下一个节日之间发生夏令时变化,我不确定最后一步是否会做正确的事情.