我想我可以通过使用 NSCalendar
和 NSDateComponents
来实现我想要的,但这会运行如下内容:
- 获取“现在”
- 从“现在”创建一个
NSDateComponents
。 - 如果“现在”是早上 7 点之前,则使用今天的日期。
- 如果“现在”是早上 7 点以后,请使用明天的日期。
- 如果今天是该月的最后一天,则增加月份,将日期设置为 1。
- 如果是 12 月,也将年份增加 1。
- 如果今天是该月的最后一天,则增加月份,将日期设置为 1。
- 设置时、分、秒。
- 创建一个新的
NSDate
。
这一切看起来很啰嗦,但这似乎是这里其他答案的建议,并且文档没有提供任何线索。我在我能找到的所有日期和日历类之间来回切换。
是否有一种简单的方法来请求“下一个早上 7 点”?
最佳答案
我还没有尝试过,但我认为这会起作用:
- 获取现在日期。
- 从现在开始创建
NSDateComponents
。 - 将小时分量设置为 7。
- 将 7am 日期组件转换回
NSDate
。 - 如果早上 7 点的日期晚于现在,您就完成了。
- 否则,使用
-[NSCalendar dateByAddingComponents:options:]
将早上 7 点的日期提前一天。
如果夏令时在早上 7 点和下一个之间发生变化,我不确定最后一步是否会做正确的事情。
关于objective-c - 在 Cocoa 中获取 "the next 7am that will occur"的 NSDate 表示的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2917908/