我必须确定H和H+3,其中H〉=到最接近的小时。
让我给你看一些例子:
如果今天时间是0 h 00-〉H = 0 h且H+3 = 3 h
如果今天小时是0 h 01-〉H = 1h且H+3 = 3 h
如果今天时间是21 h 00-〉H = 21 h且H+3 = 0 h
如果今天时间是22 h34-〉H = 23 h,且H+3 = 2 h(天+1)
我是Swift的新手,我知道如何在Obj C中获得最近的小时数,但使用Swift时我不确定。
是否有一种快速的方法来确定这两个变量H和H+3,以便在任何给定时间设置两个标签的文本。
我试过这个方法,但它给我最近的小时,但最近的一个,而不是〉=。
func nextHourDate() -> NSDate? {
let calendar = NSCalendar.currentCalendar()
let date = NSDate()
let minuteComponent = calendar.components(NSCalendarUnit.Minute, fromDate: date)
let components = NSDateComponents()
components.minute = 60 - minuteComponent.minute
return calendar.dateByAddingComponents(components, toDate: date, options: [])
}
我正在Swift 2.3中开发
编辑:
在阅读了答案/评论后,这里是我开发的。
func determineH() -> NSDate? {
let gregorian = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
let now = NSDate()
let components = gregorian.components([.Year, .Month, .Day, .Hour, .Minute, .Second], fromDate: now)
if components.minute != 0 {
components.hour = components.hour + 1
components.minute = 0
}
let date = gregorian.dateFromComponents(components)!
return date
}
3条答案
按热度按时间2jcobegt1#
基于您的代码:
检查当前小时的分钟数并返回到上一个完整小时,然后才添加!?
我不会提供
arithmetic masterpiece
的代码,因为您已经快完成了最佳:使用dateComponents更多信息
仅增加小时属性并将分钟重置为0!?
jmo0nnb32#
要得到下一个小时,你需要加上1小时,然后去掉分钟。如果你想让下一个小时(12:00 PM)是12:00 PM而不是1:00 PM,那么就加上59分59秒而不是1小时。注意,这不涉及毫秒;如果你关心这个,也把它归零:
sulc1iza3#
您也可以建立行事历延伸,如下所示:
然后就变成
Calendar.current.nextFullHour(after: Date())
了