В моем коде ниже я внедрил сборщик дат, чтобы быть подпунктом моего текстового поля. Я застрял на функции; 'VerifyAge. Оператор if в функции работает нормально и изменит цвет textField, когда дата выбора даты выше или ниже указанной даты. Но он работает только в соответствующем году, но не работает с точным Днем. Я пробовал искать последние два дня и не смог найти решение моей точной проблемы.Расчет времени с даты Выборщик Swift 3
class AgeConfirmViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var txtAgeConfirmation: UITextField!
let datePicker: UIDatePicker = UIDatePicker()
override func viewDidLoad() {
super.viewDidLoad()
txtAgeConfirmation.delegate = self
createDatePicker()
}
func textFieldDidBeginEditing(_ textField: UITextField) {
txtAgeConfirmation.inputView = datePicker
datePicker.addTarget(self, action: #selector(self.datePickerChanged(sender:)), for: .valueChanged)
}
func datePickerChanged(sender: UIDatePicker) {
let formatter = DateFormatter()
formatter.timeStyle = .none
formatter.dateStyle = .long
txtAgeConfirmation.text = formatter.string(from: sender.date)
verifyAge()
}
func createDatePicker() {
datePicker.datePickerMode = .date
datePicker.maximumDate = Calendar.current.date(byAdding: .year, value: 0, to: Date())
}
func verifyAge() {
let dateOfBirth = datePicker.date
let today = Date()
let gregorian = NSCalendar(identifier: NSCalendar.Identifier.gregorian)
let age = gregorian?.components([.month, .day, .year], from: dateOfBirth, to: today, options:[])
if (age?.year)! < 21 {
txtAgeConfirmation.textColor = UIColor.red
} else if (age?.year)! > 21 {
txtAgeConfirmation.textColor = UIColor.black
}
}
Просьба уточнить, если вам нужно, чтобы он был до дня. Значение, если возраст составляет 19 лет 11 часов 59 м, они не мясо в возрасте 20 лет. Вместо вас вы получаете, если они будут 20y в этом году, но еще не 20y. – MwcsMac
Прояснено. «он работает только с соответствующим годом, но не работает с точным днем». Я хочу, чтобы это было точно в день. – pjunior
Попробуйте этот код: http://stackoverflow.com/questions/27182023/getting-the-difference-between-two-nsdates-in-months-days-hours-minutes-seconds –