是否有可能格式化的UIDatePicker?

问题描述 投票:0回答:1

我不知道是否有可能格式化UIDatePicker

我想有日期作为字符串之前工作日,如“星期一2018年1月1日”。我见过很多次,但我没有发现任何东西。

目前,仅显示日期,而不之前工作日。

我到处找也未找到答案。

ios swift uidatepicker
1个回答
2
投票

如果你只显示日期,并希望看到星期,也可能需要实现自己的UIPickerView

例如,这将创建一个单组分选择器。而且,因为这取决于你住的地方后,2019年2月1日可能被解释为1月2日或2月1日,我会建议像EEEMMMdyyyy是简洁的,局部的,并明确一个本地化的格式:

class ViewController: UIViewController {

    @IBOutlet weak var pickerView: UIPickerView!

    private var startDate: Date!
    private var endDate: Date!

    private let formatter: DateFormatter = {
        let formatter = DateFormatter()
        formatter.setLocalizedDateFormatFromTemplate("EEEMMMdyyyy")
        return formatter
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        configurePicker()
    }

    func configurePicker() {
        // you can also hook up delegate and datasource in IB if you prefer

        pickerView.dataSource = self
        pickerView.delegate = self

        // set the range of dates to whatever is appropriate for your app

        let now = Date()
        startDate = now
        endDate = Calendar.current.date(byAdding: .year, value: 1, to: now)
    }

}

extension ViewController: UIPickerViewDataSource {
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return Calendar.current.dateComponents([.day], from: startDate, to: endDate).day!
    }
}

extension ViewController: UIPickerViewDelegate {
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        let date = Calendar.current.date(byAdding: .day, value: row, to: startDate)!
        return formatter.string(from: date)
    }

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        let date = Calendar.current.date(byAdding: .day, value: row, to: startDate)!
        print(formatter.string(from: date))
    }
}

国债收益率(对于美国用户):

enter image description here

现在,如果你想有两个自定义日期字符串格式和多组分(如日,月,年作为单独的列),它变得更混乱(因为你必须做的事情一样,当你更改调整一天值的范围月),但这个想法是一样的。只要创建你自己的UIPickerView(或搜索Interwebs第三方解决方案)。

© www.soinside.com 2019 - 2024. All rights reserved.