答案 0 :(得分:1)
执行以下步骤: -
1.您必须在应用DateFormatter()
时更改日期。
2.使用NSArray
NSMutableArray
方法保存UIPickerView
或Datasource
中的所有日期(字符串格式)。
3.然后拨打UIPickerView
Datasource
和Delegate
方法获取结果。
对于日期转换,您可以应用以下代码。
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEE dd MMM"
let currentDate = NSDate()
let convertedDateString = dateFormatter.string(from:currentDate as Date)
print("convertedDate: ", convertedDateString)
答案 1 :(得分:1)
对于这种情况,您应该将其添加为 UIPickerView 。假设问题是:如何按当月的日期填写其值?为了更清楚,我会提到它作为步骤:
您应该获得当前月份开始和结束日期。您可以通过查看this answer。
您需要在开始日期和结束日期之间获得所需的所有日期 - 所需的格式。您可以通过查看this answer。
在获得当月的所有日期后,您可以轻松填写日期选择器数据源方法。
<强>实施强>
class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
var currentMonthDays: [String] {
var array = [String]()
var date = Date().startOfMonth() // first date
let endDate = Date().endOfMonth()
let fmt = DateFormatter()
//fmt.dateFormat = "dd/MM/yyyy"
fmt.dateFormat = "EEE dd MMM"
while date <= endDate {
date = Calendar.current.date(byAdding: .day, value: 1, to: date)!
array.append(fmt.string(from: date))
}
return array
}
override func viewDidLoad() {
super.viewDidLoad()
print(currentMonthDays)
}
// Picker View Data Soruce & delegate Methods
// REMARK: make sure to connect pickerview datasource/delegate to your view controller,
// I did it from the storyboard
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return currentMonthDays.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return currentMonthDays[row]
}
}
// Step #1:
extension Date {
func startOfMonth() -> Date {
return Calendar.current.date(from: Calendar.current.dateComponents([.year, .month], from: Calendar.current.startOfDay(for: self)))!
}
func endOfMonth() -> Date {
return Calendar.current.date(byAdding: DateComponents(month: 1, day: -1), to: self.startOfMonth())!
}
}