2017-08-01 12 views
2

私はUIDatePickerViewの開始日カレンダーを180日間だけ表示したいとします。ユーザーが180日以内に開始日を選択すると、終了日ボタンをクリックします。開始日から選択した開始日を終了日にしないでください日付ピッカーstartDateとendDate Swift 3

答えて

0

addingTimeIntervalの方法を使用してこれを行うことができます。Dateです。 endDateのための今

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

、日付ピッカーは常に日付を開始し、その後90日間、前方の日付を表示します。

そして現在の日付から180日をstartDateに表示する場合は、次のように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日間の開始日が追加されます。 – 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日のみです。 – King

+0

@King check updates answer。 –

+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日間の終了日カレンダーが表示されます。 – King

関連する問題