你能有一个UIDatePicker
在 DatePicker 上显示日、月、年和时间,或者我需要进行自己的自定义UIPickerView
? i.e.
2000 年 11 月 12 日星期一 5 20 AM
目前日期选择器.datePickerMode
set to .dateTime
shows
11 月 12 日星期一 5 上午 20 点
是的你可以。但你需要将两者结合起来。使用年份选择器视图,并将日期选择器的最小值设置为所选年份的第一天,最大值设置为该年的最后一天。您还需要设置您的UIDatePicker
属性 [datePickerMode][1] 到.dateAndTime
import UIKit
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet weak var pickerView: UIPickerView!
@IBOutlet weak var datePicker: UIDatePicker!
let years = Array(Date().year-3...Date().year+3)
var date = Date()
var lastIndex = 3
override func viewDidLoad() {
super.viewDidLoad()
pickerView.delegate = self
pickerView.dataSource = self
datePicker.date = Date()
}
@IBAction func dateChanged(_ datePicker: UIDatePicker) {
date = datePicker.date
print(datePicker.date.year)
print(datePicker.date)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
pickerView.selectRow(3, inComponent: 0, animated: true)
setDatePickerMinimumAndMaximumDatesFor(year: years[3])
}
func pickerView(_ pickerView: UIPickerView,
numberOfRowsInComponent component: Int) -> Int {
return years.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return String(years[row])
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func setDatePickerMinimumAndMaximumDatesFor(year: Int) {
datePicker.minimumDate = year.firstDayOfTheYear
datePicker.maximumDate = year.lastDayOfTheYear
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
setDatePickerMinimumAndMaximumDatesFor(year: years[row])
if let optionalDate = Calendar.current.date(byAdding: .year, value: (lastIndex > row ? row - lastIndex : -(lastIndex - row)), to: date) {
datePicker.date = optionalDate
}
print(datePicker.date.year)
print(datePicker.date)
}
}
extension Date {
var year: Int {
return Calendar.current.component(.year, from: self)
}
}
extension Int {
var firstDayOfTheYear: Date {
return DateComponents(calendar: .current, year: self, month: 1, day: 1).date!
}
var lastDayOfTheYear: Date {
return DateComponents(calendar: .current, year: self, month: 12, day: 31).date!
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)