我有一个datepicker (日期类型),它要求用户选择他/她的出生日期。
如何获取出生日期的日期部分?组件(日、月、年)。
我可以从Datepicker获取NSDate,然后使用日历获取组件。但这似乎是一种拐弯抹角的方式。Datepicker已经对公历做了一个假设。
我可以不通过NSDate直接从Datepicker获取组件吗?
发布于 2016-01-09 10:22:23
您必须通过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发布于 2019-06-24 02:10:35
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发布于 2016-01-09 09:51:30
您可以使用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)
}
}https://stackoverflow.com/questions/34688752
复制相似问题