ios swift datepicker done按钮,间隔日期错误
我已经设置了一个日期选择器作为文本字段的输入视图。日期选择器的最小日期和间隔分钟为15分钟。现在,它给出了更改spin值changed delegate的正确日期。但是,如果我没有旋转选择器并点击“完成”按钮并选择默认的第一个选项,它只给出当前日期。我希望它给我的日期是默认显示在选择器。代码如下:ios swift datepicker done按钮,间隔日期错误,ios,swift2,uidatepicker,inputview,Ios,Swift2,Uidatepicker,Inputview,我已经设置了一个日期选择器作为文本字段的输入视图。日期选择器的最小日期和间隔分钟为15分钟。现在,它给出了更改spin值changed delegate的正确日期。但是,如果我没有旋转选择器并点击“完成”按钮并选择默认的第一个选项,它只给出当前日期。我希望它给我的日期是默认显示在选择器。代码如下: class ViewController: UIViewController { @IBOutlet weak var timeField: UITextField! var da
class ViewController: UIViewController {
@IBOutlet weak var timeField: UITextField!
var datePicker:UIDatePicker!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func CallPicker(sender: UITextField) {
let datePickerView:UIDatePicker = UIDatePicker()
datePickerView.datePickerMode = UIDatePickerMode.DateAndTime
datePickerView.minuteInterval = 15
datePickerView.minimumDate = NSDate()
datePicker = datePickerView
let toolBar = UIToolbar()
toolBar.sizeToFit()
let spaceButton = UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil)
let doneButton = UIBarButtonItem(title: "Done", style: .Plain, target: self, action: "doneTapped")
toolBar.setItems([spaceButton, doneButton], animated: false)
toolBar.userInteractionEnabled = true
sender.inputView = datePickerView
sender.inputAccessoryView = toolBar
datePickerView.addTarget(self, action: Selector("datePickerValueChanged:"), forControlEvents: UIControlEvents.ValueChanged)
}
func doneTapped() {
let dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = .MediumStyle
dateFormatter.timeStyle = .MediumStyle
timeField.text = dateFormatter.stringFromDate(datePicker.date)
timeField.resignFirstResponder()
}
func datePickerValueChanged(sender: UIDatePicker) {
let dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = .MediumStyle
dateFormatter.timeStyle = .MediumStyle
timeField.text = dateFormatter.stringFromDate(sender.date)
}
}
场景:假设现在是8:42。日期选择器将显示8:30作为第一个条目,但当我点击“完成”按钮时,它将只给出当前时间8:42。但是,如果我滚动旋转并返回到第一个条目,它工作得很好。您只需将此日期选择器的date属性从当前日期设置为custom,然后它就可以工作。您只需将此日期选择器的date属性从当前日期设置为custom,然后它就可以工作。在指定日期时尝试使用以下代码精选
let userDateFormate = NSDateFormatter()
userDateFormate.dateFormat = "MMMM dd, yyyy"
let dateString = userDateFormate.stringFromDate(date)
dateFormate.dateFormat = "MMMM dd, yyyy"
dateFormate.timeZone = NSTimeZone.init(forSecondsFromGMT: 0)
let dateValue = dateFormate.dateFromString(dateString)
选择日期后,请尝试使用以下代码
let userDateFormate = NSDateFormatter()
userDateFormate.dateFormat = "MMMM dd, yyyy"
let dateString = userDateFormate.stringFromDate(date)
dateFormate.dateFormat = "MMMM dd, yyyy"
dateFormate.timeZone = NSTimeZone.init(forSecondsFromGMT: 0)
let dateValue = dateFormate.dateFromString(dateString)
我也面临同样的问题,我要做的是在Calendar.current.dateComponents的帮助下为UIDatePicker设置一个更晚的时间
func patchTime(){
var components = Calendar.current.dateComponents([.hour, .minute], from: self.timePicker.date);
components.hour = (components.hour ?? 0) + 1
components.minute = 0
let calendar = Calendar.current
let date = calendar.date(from: components)
self.timePicker.date = date!;
}
目前,我正在使用时间选择器,但如果日期也需要,模式将是相同的我也面临同样的问题,我要做的是在Calendar.current.dateComponents的帮助下为UIDatePicker设置一个更晚的时间
func patchTime(){
var components = Calendar.current.dateComponents([.hour, .minute], from: self.timePicker.date);
components.hour = (components.hour ?? 0) + 1
components.minute = 0
let calendar = Calendar.current
let date = calendar.date(from: components)
self.timePicker.date = date!;
}
目前我正在使用时间选择器,但如果日期也需要,模式将是相同的你找到了吗?你找到了吗?