从UIDatepicker获取日期组件

时间:2016-01-09 01:34:56

标签: swift date datepicker

我有一个日期选择器(日期类型),要求用户选择他/她的出生日期。

如何获取出生日期的日期组成部分。组件(日,月,年)。

我可以从Datepicker获取NSDate,然后使用日历获取组件。但这似乎是圆润的方式。 Datepicker已经假设格里高利历。

我是否可以直接从Datepicker获取组件而无需通过NSDate。

3 个答案:

答案 0 :(得分:1)

您必须通过NSCalender才能获得组件,但它可能是NSDatePicker已经使用的组件:

let components = datePicker.calendar.components([.Day, .Month, .Year], fromDate: datePicker.date)
let day = components.day
let month = components.month
let year = components.year

答案 1 :(得分:0)

您可以使用NSCalendar组件方法从日期选择器日期中提取您想要的任何组件。看一下下面的例子:

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var datePicker: UIDatePicker!
    override func viewDidLoad() {
        super.viewDidLoad()
        datePicker.datePickerMode = .Date
        datePicker.minimumDate = NSCalendar.currentCalendar().dateByAddingUnit(.Year, value: -120, toDate: NSDate(), options: [])
        datePicker.addTarget(self, action: "dateChanged:", forControlEvents: .ValueChanged)
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
    func dateChanged(sender:UIDatePicker) {
        print(sender.date.year)
        print(sender.date.month)
        print(sender.date.day)
        print(NSCalendar.currentCalendar().components(.Year, fromDate: sender.date, toDate: NSDate(), options: []).year)
    }
}

extension NSDate {
    var day: Int {
        return NSCalendar.currentCalendar().component(.Day,   fromDate: self)
    }
    var month: Int {
        return NSCalendar.currentCalendar().component(.Month, fromDate: self)
    }
    var year: Int {
        return NSCalendar.currentCalendar().component(.Year,  fromDate: self)
    }
}

答案 2 :(得分:0)

更新SWIFT 5

// Get date picker data
let components = datePicker.calendar.dateComponents([.day, .month, .year],
                                                    from: datePicker.date)
let day = components.day
let month = components.month
let year = components.year