objective-c - 在 Cocoa 中获取 "the next 7am that will occur"的 NSDate 表示的最简单方法?

标签 objective-c cocoa macos

我想我可以通过使用 NSCalendarNSDateComponents 来实现我想要的,但这会运行如下内容:

  • 获取“现在”
  • 从“现在”创建一个 NSDateComponents
  • 如果“现在”是早上 7 点之前,则使用今天的日期。
  • 如果“现在”是早上 7 点以后,请使用明天的日期。
    • 如果今天是该月的最后一天,则增加月份,将日期设置为 1。
      • 如果是 12 月,也将年份增加 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/

相关文章:

macos - 将 NSArrayController 绑定(bind)到 NSPopupButton 和 NSTextField

macos - 当我 ssh 到特定服务器时,如何使苹果终端窗口自动更改配色方案

objective-c - NSUInteger 相当于普通的旧 int 吗?

objective-c - NSView 添加为 subview 后未显示(Cocoa/OSX)

objective-c - 在 Objective-C 中使用 libsvn(_client)

c - 为什么我不能将可选的 Swift String 传递给允许 NULL 指针的 C 函数?

macos - 在 macOS 上的 python 2.7 上安装 rpy2

ios - 按下 "Tab"键时多次调用 textFieldShouldBeginEditing

objective-c - iOS 奇怪的继承错误

ios - 在异步操作后设置 CoreData 字段(但不包括其他字段)时的 EXC_BAD_ACCESS