나는 문제가있어서 해결책을 찾지 못하는 것 같습니다. 날짜 선택기와 시작 날짜와 종료 날짜를 설정하는 두 개의 단추가 있습니다. 내 앱은이 두 날짜의 차이를 계산합니다.두 개의 NSDate의 계산 된 차이가 잘못됨 - 수정 됨
계산 된 차이가 올바르지 않습니다. 예를 들어 5 Nov, 2016
을 첫 번째 날짜로 설정하고 6 Nov, 2016
을 두 번째 날짜로 설정하면 코드에서 0
일의 차이를 반환합니다. 내가 7 Nov, 2016
에 두 번째 날짜를 변경하면 I합니다 (차이가 제대로 계산되고firstDate
5 Nov, 2016
에 다음 첫lastDate
에 6 Nov, 2016
등을 설정하여 그것을 다른 방법을 수행 할 때 그것은 1
일 등 그러나의 차이를 반환 출력은 1
일). 그것은 어떻게 든 당신이 먼저 설정 한 날짜에 달려 있습니다.
@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)
}
}
날짜 형식 지정 및 문자열 처리가 날짜 계산을 수행하는 적절한 방법이 아닙니다. 적절한 날짜 계산을하기 위해서'NSCalendar' 클래스를 사용하십시오. – rmaddy
적절한 해결책은 http://stackoverflow.com/questions/24723431/swift-days-between-two-nsdates를 참조하십시오. – rmaddy
이 새로운 방법을 시도했지만 한 날짜를 설정하려고하면 즉시 충돌합니다. 나 좀 도와 줄 수있어? – heisenberg