swift - Calculated difference of two NSDates is Wrong - fixed -


i'm facing issues , can't seem find solution it. there date picker , 2 buttons set start date , end date. app calculates difference between these 2 dates.

unfortunately, calculated difference not correct. example when set 5 nov, 2016 first date , 6 nov, 2016 second date, code returns difference of 0 days. when change second date 7 nov, 2016 returns difference of 1 day etc. but when other way setting first lastdate 6 nov, 2016 and then firstdate 5 nov, 2016 difference being calculated (the output 1 day). somehow depends on date set first.

here code:

@iboutlet weak var startdateoutput: uilabel! @iboutlet weak var enddateoutput: uilabel! @iboutlet weak var datepicker: uidatepicker! @iboutlet weak var answerfieldtimedifference: uilabel!  var firstdate:nsdate? var lastdate:nsdate?  @ibaction func startbutton(sender: anyobject) {     firstdate = datepicker.date     let datestr = nsdateformatter.localizedstringfromdate(firstdate!, datestyle: nsdateformatterstyle.mediumstyle, timestyle: nsdateformatterstyle.nostyle)     startdateoutput.text = datestr      daysbetweendates() }  @ibaction func expirationbutton(sender: anyobject) {     lastdate = datepicker.date     let datestr = nsdateformatter.localizedstringfromdate(lastdate!, datestyle: nsdateformatterstyle.mediumstyle, timestyle: nsdateformatterstyle.nostyle)     enddateoutput.text = datestr       daysbetweendates() }  func daysbetweendates() {     if var firstdate = firstdate, var lastdate = lastdate     {                 let calendar = nscalendar.currentcalendar()          let firstdate = calendar.startofdayfordate(firstdate)         let seconddate = calendar.startofdayfordate(lastdate)          let components = calendar.components([.day], fromdate: date1, todate: date2, options: [])          var differenceindays = components.day          answerfieldtimedifference.text = string(differenceindays)     }     } 

i found solution problem.

i added following 2 lines daysbetweendates() function

let firstdate = calendar.startofdayfordate(firstdate) let seconddate = calendar.startofdayfordate(lastdate) 

the code above updated , should calculate difference correctly.


Comments

Popular posts from this blog

java - SSE Emitter : Manage timeouts and complete() -

jquery - uncaught exception: DataTables Editor - remote hosting of code not allowed -

java - How to resolve error - package com.squareup.okhttp3 doesn't exist? -