Swift:最快日期的特定时间的下一个实例

标签 swift date time nsdate

我正在使用 Swift 2.1 构建一个可设置重复提醒的应用程序。这主要由两部分组成:

  1. 用户可以选择提醒必须开始的时间(例如 09:00)
  2. 用户可以选择每隔 X 小时重复一次(例如,如果是六个小时,则提醒将设置在 09:00、15:00、21:00、03:00)

我正在使用 CVCalendarKit操纵某些日期单位,所以第 2 部分(每次增加 X 小时)不是我遇到的麻烦。

我想弄清楚的是,是否有一种简单的方法可以用特定时间的最快实例创建 NSDate 的实例。

所以,假设今天是 2016 年 2 月 13 日,

  • 如果是 8:59,则创建的 NSDate 应该是 2016-02-13 09:00:00
  • 如果是 9:01,则​​创建的 NSDate 应该是 2016-02-14 09:00:00

非常感谢。

最佳答案

您可以使用 NSCalendar.nextDateAfterDate()

let calendar = NSCalendar.currentCalendar()

let now = NSDate()

let nextTime = calendar.nextDateAfterDate(now,
                          matchingHour: 9,
                                minute: 0,
                                second: 0,
                               options: NSCalendarOptions.MatchNextTime)

如果您不使用开源 Swift Foundation 库,这仅适用于 iOS 8+ 或 OS X 10.9+

关于Swift:最快日期的特定时间的下一个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35380563/

相关文章:

javascript - 打印数组内某些对象日期范围内包含的所有日期的最佳方法是什么?

r - 如何向日期添加或减去数字?

ios - 根据时间更改 uiNavigationController

ios - 创建 session UUID Swift

ios - 如何从谷歌地图获取省份和城市 - ios

javascript - 夏威夷时区的日期使 JavaScript 日期无效

javascript - 如何让它仅显示当前日期但在选定的时区内?

ios - UIView的frame.height和frame.size.height有什么区别?

ios - 如何在 ios-charts 中为 BarChartView 添加 XAxis 标签

c++ - 从午夜起,我很难从一年中的几天和几秒钟获取日期/时间部分