ios - swift 4中datePicker中月份列中的随机值

标签 ios swift datepicker

<分区>

我正在获取随机值月份列。 对于日期选择器中选择的任何值,月份列中的值保持不变

这是我的代码

@IBAction func chooseDobClicked(_ sender: Any) {

    self.view.endEditing(true)
    datePickerView.isHidden = false
    datePicker.isHidden = false
}

@objc func doDatePicker(){

    //DatepickerView
    self.datePickerView.frame = CGRect(x: 5, y: Int(SCREEN_HEIGHT-280), width: Int(SCREEN_WIDTH-10), height: 276)
    self.datePickerView.backgroundColor = UIColor.white
    self.datePickerView.layer.cornerRadius = 8.0
    self.datePickerView.layer.masksToBounds = true
    self.datePickerView.layer.borderWidth = 2;
    self.datePickerView.layer.borderColor = UIColor.black.cgColor;

    doneBtn.addTarget(self, action: #selector(doneClicked), for: .touchUpInside)
    doneBtn.setTitle("Done", for: .normal)
    doneBtn.frame = CGRect(x: 20, y: 10, width: 80, height: 50)
    doneBtn.setTitleColor(UIColor.white, for: .normal)
    doneBtn.backgroundColor = LogInVC.THEMECOLOR
    doneBtn.titleLabel?.font = UIFont(name: "Raleway-Bold", size: 16.0)
    doneBtn.layer.cornerRadius = 16.0
    doneBtn.layer.masksToBounds = true
    doneBtn.layer.borderColor = UIColor.clear.cgColor
    doneBtn.layer.borderWidth = 1

    cancelBtn.addTarget(self, action:#selector(cancelClicked), for: .touchUpInside)
    cancelBtn.setTitle("Cancel",for: .normal)
    cancelBtn.frame = CGRect(x: SCREEN_WIDTH-110, y: 10, width: 80, height: 50)
    cancelBtn.setTitleColor(UIColor.white, for: .normal)
    cancelBtn.backgroundColor = LogInVC.THEMECOLOR
    cancelBtn.titleLabel?.font = UIFont(name: "Raleway-Bold", size: 16.0)
    cancelBtn.layer.cornerRadius = 16.0
    cancelBtn.layer.masksToBounds = true
    cancelBtn.layer.borderColor = UIColor.clear.cgColor
    cancelBtn.layer.borderWidth = 1

    // DatePicker    
    self.datePicker = UIDatePicker(frame:CGRect(x: 0, y: 90, width: Int(SCREEN_WIDTH-20), height: 200))
    self.datePicker?.backgroundColor = UIColor.white
    self.datePicker?.datePickerMode = UIDatePickerMode.date
    self.datePicker?.layer.masksToBounds = true
 //   datePicker.center = view.center

        datePickerView.addSubview(datePicker)
        datePickerView.addSubview(doneBtn)
        datePickerView.addSubview(cancelBtn)

        self.view.addSubview(datePickerView)
        datePickerView.isHidden = true;
}

@objc func doneClicked(){

    let dateFormatter1 = DateFormatter()
    dateFormatter1.dateFormat = "dd/mm/yyyy"

    var calendar = Calendar(identifier: .gregorian)

    var components: DateComponents? = calendar.dateComponents([.year, .month, .day], from: datePicker.date, to: Date())
    print("Difference in date components: \(components?.day ?? 0)/\(components?.month ?? 0)/\(components?.year ?? 0)")
    if (components?.year ?? 0) < 18 || (components?.year ?? 0) >= 90 {
        var alert = UIAlertView(title: "Alert!", message: "User age should be greater than 18 years and less than 90 years.", delegate: nil, cancelButtonTitle: "OK", otherButtonTitles: "")
        alert.show()
        return
    }
    print(dateFormatter1.string(from: datePicker.date))

    dobTextField.text = dateFormatter1.string(from: datePicker.date)
    dobTextField.resignFirstResponder()
    datePickerView.isHidden = true
}

@objc func cancelClicked(){

    datePickerView.isHidden = true
    dobTextField.resignFirstResponder()
}

这是我得到的值 enter image description here

每次都会出现月份列中的这个“45”值 有时它会变成“35” 但月份字段中的值总是不同

如果有人有想法,请分享。 谢谢

最佳答案

其实这不是随机的。您使用了错误的日期格式,mm分钟MM 是月。

dateFormatter1.dateFormat = "dd/MM/yyyy"

请阅读unicode.org: Dates了解更多信息

关于ios - swift 4中datePicker中月份列中的随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51925155/

相关文章:

swift - 最大(_ :_:) and min(_:_:) in an Int extension in Swift

Javascript获取Jquery datepicker值并转换为整数进行计算

ios - 无法识别的选择器发送到实例 (iOS)

iphone - 如何抹掉UIPasteboard的值(value)

ios - 启动 IOS map GPS 导航并返回应用程序后应用程序崩溃

java - CalenderView 不存在 - 试图实现 DatePickerDialog

javascript - 无法为 mootools 中的日期选择器提供 maxdate 选项

ios - 核心数据关系 - 购物车

mysql - iOS 应用程序开发 - 数据库

ios - 符合 UIApperance 的自定义类允许使用哪些 Swift 属性类型?