【问题标题】:Getting date components from UIDatepicker从 UIDatepicker 获取日期组件
【发布时间】:2016-04-13 19:50:43
【问题描述】:

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

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

我可以从 Datepicker 获取 NSDate,然后使用日历获取组件。但这似乎是一种迂回的方式。 Datepicker 已经对公历做出了假设。

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

【问题讨论】:

    标签: swift date datepicker


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      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
      

      【讨论】:

        【解决方案3】:

        您可以使用 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)
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2015-06-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多