iosswiftdate

How to add minutes to current time in swift


I am new to Swift and am trying a scheduler. I have the start time selected and I need to add 5 minutes (or multiples of it) to the start time and display it in an 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*

Solution

  • Two approaches:

    1. Use Calendar and date(byAdding:to:wrappingComponents:). E.g., in Swift 3 and later:

      let calendar = Calendar.current
      let date = calendar.date(byAdding: .minute, value: 5, to: startDate)
      
    2. Just use + operator (see +(_:_:)) to add a TimeInterval (i.e. a certain number of seconds). E.g. to add five minutes, you can:

      let date = startDate + 5 * 60
      

      (Note, the order is specific here: The date on the left side of the + and the seconds on the right side.)

      You can also use addingTimeInterval, if you’d prefer:

      let date = startDate.addingTimeInterval(5 * 60)
      

    Bottom line, +/addingTimeInterval is easiest for simple scenarios, but if you ever want to add larger units (e.g., days, months, etc.), you would likely want to use the calendrical calculations because those adjust for daylight savings, whereas addingTimeInterval doesn’t.


    For Swift 2 renditions, see the previous revision of this answer.