在日期选择器中获取不可用的日期(快速)

时间:2018-07-23 06:57:20

标签: swift uidatepicker

我有一个UIDatePicker,从今天到下一周(从Date()到Date()。day + 7)都可以使用。

假设今天是每月的30号,因此可以选择的日期是本月的30号和下个月的1日至6日。

在这种情况下,随着用户将日期从30更改为1,我需要将datePicker月份更改为下个月。

但是问题是: “当我将日期更改为无效的日期时,.change方法会给我最无效的日期。”

示例:


假设:

  1. 今天= 7月28日。

  2. 可选日期= 7月28日至8月3日。


我需要什么

  1. 用户无法选择7月28日之前和8月3日之后的日期。

  2. 当用户要将日期更改为8月1、2或3时,datePicker本身会将月份更改为8月,并使1、2和3可用于 由用户选择。


主要问题

  1. 当用户将日期更改为1、2或3时,我无法获得1、2或3!并返回“ 28”!

3 个答案:

答案 0 :(得分:1)

只需将 <!DOCTYPE html> <html> <head> <title></title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script type="text/javascript"> let clicked $(document).ready(function(){ $('#inpfile').change( function ( ){ console.log(clicked) var file_data = $('#inpfile').prop('files')[0]; var form_data = new FormData(); form_data.set('inpfile', file_data , file_data.name ); form_data.append( 'clicked', clicked); $.ajax({ url: "banners-pro-btnplus.php", type: 'post', cache: false, contentType: false, processData: false, data: form_data, success: function(data) { console.log(data); } }); }) }) function bttn_click(){ clicked = 'a'; document.getElementById('inpfile').click(); } </script> </head> <body> <form> <input type="file" name="" id="inpfile"> <button onclick="bttn_click()" >Browse</button> </form> </body> </html> maximumDate 属性设置为所需日期。

UIDatePicker

答案 1 :(得分:0)

在viewDidLoad中调用此函数以设置日历以设置最大和最小日期:

fileprivate func setupCalendar() {
    datePicker.minimumDate = Calendar.current.date(byAdding: .day, value: 0, to: ServerTime.sharedInstance.nowTime)
    datePicker.maximumDate = Calendar.current.date(byAdding: .day, value: +7, to: ServerTime.sharedInstance.nowTime)
}

为了计算显示日期和当前日期之间的天数,我使用了此方法:

extension Date {
 //Calculate days between two day objects
func daysBetween(_ date: Date) -> Int {
    let calendar = NSCalendar.current

    // Replace the hour (time) of both dates with 00:00
    let date1 = calendar.startOfDay(for: date)
    let date2 = calendar.startOfDay(for: self)

    let components = calendar.dateComponents([.day], from: date1, to: date2)

    return components.day ?? 0  // This will return the number of day(s) between dates
  }
}}

答案 2 :(得分:0)

事实上,不可能在他们选择之前就获得日期。而且根据更改月份之前下个月的几天不可用,我无法使用UIDatePicker进行处理。

所以最后我实现了自定义的UIPickerView。

如@holex所说。

谢谢大家的回答。