我有一个日期选择器(日期类型),要求用户选择他/她的出生日期。
如何获取出生日期的日期组成部分。组件(日,月,年)。
我可以从Datepicker获取NSDate,然后使用日历获取组件。但这似乎是圆润的方式。 Datepicker已经假设格里高利历。
我是否可以直接从Datepicker获取组件而无需通过NSDate。
答案 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