如何在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* 

两种方法:

  1. 使用日历:

    在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: []) 
  2. 只需使用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))