日历文本标签不会更新

Calendar text label will not Update

    datePicker.addTarget(self, action: #selector(datePickerChanged(datePicker:)), for: UIControlEvents.valueChanged)

    dateFormat()

} //this works
func dateFormat() {
    let today = NSDate()
    let dateFormatter = DateFormatter()
    let short = DateFormatter.Style.short
    dateFormatter.dateStyle = short
    dateFormatter.dateFormat = "MM-dd-YYYY"
    let startDate = dateFormatter.string(from: datePicker.date)
    dateLbl.text = startDate

    //this works but datePicker date when moved will not update
    let thirtyDays = NSCalendar.current.date(byAdding: Calendar.Component.day,value: 30, to: today as Date)
    let tomorrowSixty = dateFormatter.string(from: thirtyDays!)
    sixtyDay.text = tomorrowSixty

}
func datePickerChanged(datePicker:UIDatePicker){
    dateFormat()

}

}

在Swift 3 中,如果使用DateCalendar 而不是NSDateNSCalendar 则更好。

现在,如果您想将 sixtyDay 标签设置为 datePicker 日期 30 天之后的日期,那么您需要使用 datePicker.datedate(byAdding:) 而不是今天的日期。

func dateFormat() {

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "MM-dd-yyyy"
    let startDate = dateFormatter.string(from: datePicker.date)
    dateLbl.text = startDate

    //this works but datePicker date when moved will not update
    let thirtyDays = Calendar.current.date(byAdding: .day, value: 30, to: datePicker.date)
    let tomorrowSixty = dateFormatter.string(from: thirtyDays!)
    sixtyDay.text = tomorrowSixty
}

func datePickerChanged(datePicker:UIDatePicker){
    dateFormat()
}

注意: 如果您设置 dateFormatDateFormatter 那么不需要设置 dateStyleDateFormatter正确的年份格式是 yyyy 而不是 YYYY.