2017-08-01 130 views
2

我想要显示UIDatePickerView仅180天的开始日期日历,当用户在180天内选择任何开始日期时,他将点击结束日期按钮,以便日期选择器只显示89从开始日期和选定的开始日期开始的日期不应该是结束日期日期选择器startDate和endDate Swift 3

回答

0

您可以使用addingTimeInterval方法Date来做到这一点。

datePicker.minimumDate = startDate?.addingTimeInterval(60 * 60 * 24 * 90) // 90 days interval offset 

现在为endDate,总的DatePicker显示装置90日内提出日期,然后启动日期。

如果你想在startDate的当前日期显示180天,那么你可以像下面一样管理startDate。

datePicker.minimumDate = Date() //Today's date 
datePicker.maximumDate = Date().addingTimeInterval(60 * 60 * 24 * 180) //180 days forward time from today. 

它只会在datePicker中显示180天的持续时间。

+0

谢谢你..让我看看它的铁锅:)但由于很多提前 – King

+0

怎么样的开始日期??我必须只显示180天? – King

+0

@King,检查已更新的答案,其中180天的startDate持续时间已添加。 – Jaydeep

0

如果你想显示从开始日期只有90天,比:

@IBOutlet var datePicker: UIDatePicker! 

override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     datePicker.datePickerMode = .date //To show only Date format for date picker 

    //Get current Date 
    var currentDate = Date() 

    let addDays: TimeInterval = (60 * 60 * 24 * 180) //Add 180 for initial Days 

    currentDate = currentDate.addingTimeInterval(addDays) 

    datePicker.minimumDate = Date() //Start with current date 
    datePicker.maximumDate = currentDate //End with current date + 180 days. 

} 

//Action for DatePicker 
@IBAction func displayDay(_ sender: Any) { 

    let choosenDate = datePicker.date 

    //If you want to set Date format for selected picker date 
    let dateFormatter = DateFormatter() 
    dateFormatter.dateFormat = "MMM dd, yyyy" 

    let selectedDate = dateFormatter.string(from: choosenDate) 
    print(selectedDate) 

    //You can use different datePicker object to set below endDate as +90 days because if you you same date picker it will always add selected date +90 days to date picker. 
    let addDays: TimeInterval = (60 * 60 * 24 * 89) //Add 89 Days 

    //Set Start Date as choosen Date 
    datePicker.minimumDate = choosenDate 

    //Set Max Date as choosen Date + 89 Days 
    datePicker.maximumDate = Date(timeInterval: addDays, since: choosenDate) 
} 
+0

非常感谢,我真的很感激,但开始日期呢?我必须只显示180天?并且,当用户将从开始日期选择任何日期,以便日期不应该在结束日期只有89天enddate日历应显示... – King

+0

@ King检查更新答案。 –

+0

谢谢先生的帮助... – King

1
// Add A Button And Give them Connection 
@IBOutlet weak var DateSelect: UIButton! 

// Add "UIDatePicker" to your project and Give them connection 
@IBOutlet weak var fromedatepicker: UIDatePicker! 

// . and Make an Action Button to "UIDatePicker" 
@IBAction func fromedatepicker(_ sender: Any) { 
    let calendar: NSCalendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian)! 
    let currentDate = NSDate() 
    let dateComponents = NSDateComponents() 
    let minDate = calendar.date(byAdding: dateComponents as DateComponents, to: currentDate as Date, options: NSCalendar.Options(rawValue: 0)) 

    dateComponents.month = 3 //or you can change month = day(90)   

    let maxDate = calendar.date(byAdding: dateComponents as DateComponents, to: currentDate as Date, options: NSCalendar.Options(rawValue: 0)) 
    self.fromedatepicker.maximumDate = maxDate 
    self.fromedatepicker.minimumDate = minDate 

    let dateFormatter = DateFormatter() 

    dateFormatter.dateFormat = "dd/MM/yyyy" 
    let strDate = dateFormatter.string(from: fromedatepicker.date) 
    print(strDate) 

    DateSelect.DateSelect.titleLabel?.text = strDate  
} 
+0

非常感谢,我真的很感激,但开始日期呢?我必须只显示180天?并且,当用户将从开始日期中选择任何日期,以便日期不应只在结束日期89天enddate日历应显示... – King

相关问题