ios swift datepicker完成按钮,错误的日期与间隔

标签 ios swift2 uidatepicker inputview

我已将日期选择器设置为文本字段的输入 View 。日期选择器的最小日期和间隔分钟为 15。现在它给出了更改旋转值更改委托(delegate)的正确日期。但是,如果我不旋转选择器并点击默认首先选择的完成按钮,它只会给出当前日期。我希望它能给我选择器中默认显示的日期。这是代码:

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。但是,如果我滚动旋转并返回第一个条目,它会很好地工作。

最佳答案

选择日期时尝试使用以下代码

    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)

关于ios swift datepicker完成按钮,错误的日期与间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32515017/

相关文章:

ios - 更新到 iOS 版本 9.3.3 后,重定向 url 以启动应用程序不起作用

iphone - UIPopover 无法从 UIButton 正确显示

swift - 当自定义展开/折叠日期选择器位于表格 View 的底部单元格时,它会展开 View - Swift

ios - 在 iOS 8/9 上录制音频并将数据传递到 UIWebView (JavascriptCore)

ios - 如何在 iOS 中通过触摸来回移动对象

ios - 我不应该在 viewDidLoad 中使用 UIButton 的 addTarget

objective-c - 带背景的自定义 AlertView

ios - 如何自定义颜色选定的单元格?

swift - 定义属性时无法在闭包中引用 self

ipad - IOS:UIDatePicker 呈现黑色背景效果不佳