如何在swift中添加分钟到当前时间
我是Swift新手,正在尝试一个调度器。 我有开始时间select,我需要添加5分钟(或其倍数)的开始时间,并显示在UILabel?
@IBAction func timePickerClicked(sender: UIDatePicker) { var dateFormatter = NSDateFormatter() dateFormatter.timeStyle = NSDateFormatterStyle.ShortStyle var dateStr = dateFormatter.stringFromDate(startTime.date) let sttime = dateStr startTimeDisplay.text = dateStr } // How to advance time by 5 minutes for each section based on the start time selected and display time // section 1 = start time + 5 // section 2 = start time + 10*
两种方法:
-
使用日历:
在Swift 3:
let calendar = Calendar.current let date = calendar.date(byAdding: .minute, value: 5, to: startDate)
或者,在Swift 2:
let calendar = NSCalendar.currentCalendar() let date = calendar.dateByAddingUnit(.Minute, value: 5, toDate: startDate, options: [])
-
只需使用
dateByAddingTimeInterval
来添加一定数量的秒。例如,在Swift 3:
let date = startDate.addingTimeInterval(5.0 * 60.0)
或者在Swift 2中:
let date = startDate.dateByAddingTimeInterval(5.0 * 60.0)
底线, dateByAddingTimeInterval
是最简单的,但如果你有添加天,月等,你想使用日历计算,因为这些调整为夏令时,而dateByAddingTimeInterval
不是。
您可以使用NSCalendar的方法dateByAddingUnit将任何NSCalendarUnit添加到任何date。 你可以创build一个NSDate扩展来为你的UIDatePicker的date添加x分钟:
extension NSDate { func add(#minutes: Int) -> NSDate! { return NSCalendar(calendarIdentifier: NSGregorianCalendar)!.dateByAddingUnit(NSCalendarUnit.CalendarUnitMinute, value: minutes, toDate: self, options: nil) } }
那么你可以使用你的扩展如下:
let section1 = startTime.date.add(minutes: 5) let section2 = startTime.date.add(minutes: 10)
编辑/更新:
Xcode 8•Swift 3.0
extension Date { func add(minutes: Int) -> Date { return Calendar(identifier: .gregorian).date(byAdding: .minute, value: minutes, to: self)! } }
testing:
Date().add(minutes: 10) // "Jun 14, 2016, 5:31 PM"
保存这个小扩展:
extension Int { var seconds: Int { return self } var minutes: Int { return self.seconds * 60 } var hours: Int { return self.minutes * 60 } var days: Int { return self.hours * 24 } var weeks: Int { return self.days * 7 } var months: Int { return self.weeks * 4 } var years: Int { return self.months * 12 } }
然后直观地使用它:
let threeDaysLater = TimeInterval(3.days) date.addingTimeInterval(threeDaysLater)
您可以使用NSDateComponents
进行date算术。 例如:
import Foundation let comps = NSDateComponents() comps.minute = 5 let cal = NSCalendar.currentCalendar() let r = cal.dateByAddingComponents(comps, toDate: NSDate(), options: nil)
这是你在操场上看到的东西
Swift 4 :
//新增5分钟
let date = startDate.addingTimeInterval(TimeInterval(5.0 * 60.0))
//从date减去5分钟
let date = startDate.addingTimeInterval(TimeInterval(-5.0 * 60.0))
Swift 3:
let minutes: TimeInterval = 1 * 60 let nowPlusOne = Date() + minutes
带timeIntervalSinceNow
NSDate.init
:
例如:
let dateAfterMin = NSDate.init(timeIntervalSinceNow: (minutes * 60.0))