我有一个UIDatePicker,从今天到下周(从Date()到Date().day+7)都可以使用。
假设今天是一个月的第30天,那么可以选择的日期是本月的第30天和下个月的第一到第6天。
在这种情况下,我需要将datePicker month更改为next month,因为用户将day从30更改为1。
但问题是:
“当我将日期更改为无效日期时,.change方法将给出最低有效日期。”
例子:
假设:
今天=7月28日。
可选择日期=7月28日至8月3日。
我需要的是:
用户不能选择7月28日之前和8月3日之后。
当用户希望将日期更改为8月1日、2日或3日时,datePicker本身会将月份更改为8月,并使1、2和3可用于
由用户选择。
主要问题
当用户将日期更改为1、2或3时,我无法获取1、2或3!它还给我“28”!
最佳答案
只需将您的UIDatePicker
最大值属性设置为期望日期。
func setupDatePicker(){
var currDateComponents = getDateComponents(fromDate: Date())
var maxDateComponents = currDateComponents
if let date = currDateComponents?.day{
maxDateComponents?.day = date + 7
}
self.datePicker?.maximumDate = getDate(fromDateComponents: maxDateComponents)
}
func getDateComponents(fromDate date: Date?)-> DateComponents?{
let calendar = Calendar(identifier: .gregorian)
var dateComponents: DateComponents? = nil
if(date != nil){
dateComponents = calendar.dateComponents([.day, .month, .year], from: date!)
}
return dateComponents
}
func getDate(fromDateComponents dateComponents:DateComponents?)-> Date?{
let calendar = Calendar(identifier: .gregorian)
if let componentsBasedDate = calendar.date(from: dateComponents!) {
return componentsBasedDate
}
return nil
}
关于swift - 在日期选择器中获取不可用的日期(快速),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51473131/