2010-06-17 146 views

回答

71

未經測試,但您可能需要這樣的東西。

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDate *currentDate = [NSDate date]; 
NSDateComponents *comps = [[NSDateComponents alloc] init]; 
[comps setYear:30]; 
NSDate *maxDate = [calendar dateByAddingComponents:comps toDate:currentDate options:0]; 
[comps setYear:-30]; 
NSDate *minDate = [calendar dateByAddingComponents:comps toDate:currentDate options:0]; 

[datePicker setMaximumDate:maxDate]; 
[datePicker setMinimumDate:minDate]; 
+0

如果您還有日期和月份列,它不會搞砸嗎?它將以目前的形式限制當前日期的月份和日期。就像今天是2015年6月3日一樣。年數一切正常。一天將停留在最大值3和月將停留在最大值6月 – NSNoob 2015-06-03 07:25:14

+0

不。你是盲目投機嗎? – warrenm 2015-06-05 20:18:49

+0

不,我在一個我正在研究的應用程序中嘗試過,並且遇到了我告訴過你的問題。最後,我不得不單獨在日期上進行支票。 – NSNoob 2015-06-09 08:04:06

16
m_datePicker.maximumDate = [NSDate date]; 

您可以使用此行代碼來設置最大日(今天)。

+0

以及如何隱藏日期> maximumDate? – alex 2015-09-08 11:21:00

+0

實際上,它會將最大日期設置爲執行該代碼行的確切分鐘數 – 2015-10-29 16:35:35

+0

它不允許選擇比今天晚的日期,但用戶已經看到了更晚的日期。 – 2016-06-01 07:50:14

1

請試試這個代碼iOS8上+

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; 
NSDate *currentDate = [NSDate date]; 
NSDateComponents *comps = [[NSDateComponents alloc] init]; 
[comps setYear:30]; 
NSDate *maxDate = [calendar dateByAddingComponents:comps toDate:currentDate options:0]; 
[comps setYear:-30]; 
NSDate *minDate = [calendar dateByAddingComponents:comps toDate:currentDate options:0]; 

[datePicker setMaximumDate:maxDate]; 
[datePicker setMinimumDate:minDate]; 
3

適應@ warrenm的回答讓斯威夫特:

let currentDate = NSDate() 
let dateComponents = NSDateComponents() 
dateComponents.year = -13 
let minDate = calendar.dateByAddingComponents(dateComponents, toDate: currentDate, options: NSCalendarOptions(rawValue: 0)) 
dateComponents.year = 30 
let maxDate = calendar.dateByAddingComponents(dateComponents, toDate: currentDate, options: NSCalendarOptions(rawValue: 0)) 


dobPicker.maximumDate = maxDate 
dobPicker.minimumDate = minDate 
1

今天看這個問題,並與斯威夫特3擴展的UIDatePicker的解決方案上來。

extension UIDatePicker 
{ 
    /// set the date picker values and set min/max 
    /// - parameter date: Date to set the picker to 
    /// - parameter unit: (years, days, months, hours, minutes...) 
    /// - parameter deltaMinimum: minimum date delta in units 
    /// - parameter deltaMaximum: maximum date delta in units 
    /// - parameter animated: Whether or not to use animation for setting picker 
    func setDate(_ date:Date, unit:NSCalendar.Unit, deltaMinimum:Int, deltaMaximum:Int, animated:Bool) 
    { 
     setDate(date, animated: animated) 

     setMinMax(unit: unit, deltaMinimum: deltaMinimum, deltaMaximum: deltaMaximum) 
    } 

    /// set the min/max for the date picker (uses the pickers current date) 
    /// - parameter unit: (years, days, months, hours, minutes...) 
    /// - parameter deltaMinimum: minimum date delta in units 
    /// - parameter deltaMaximum: maximum date delta in units 
    func setMinMax(unit:NSCalendar.Unit, deltaMinimum:Int, deltaMaximum:Int) 
    { 
     if let gregorian = NSCalendar(calendarIdentifier:.gregorian) 
     { 
      if let minDate = gregorian.date(byAdding: unit, value: deltaMinimum, to: self.date) 
      { 
       minimumDate = minDate 
      } 

      if let maxDate = gregorian.date(byAdding: unit, value: deltaMaximum, to: self.date) 
      { 
       maximumDate = maxDate 
      } 
     } 
    } 
} 

setDate方法將設置UIDatePicker實例的三個值(日期,最小值,最大值)。

setMinMax只設置最小值和最大值。最小值和最大值使用選擇器的當前日期進行計算。

單元可以是以下值:

  • .year
  • .month
  • ·天
  • ·小時
  • .minute
  • 。第二

用pl設定日期我們再減去三十多年來,代碼如下:

var datePicker = UIDatePicker() 
var date = Date() 

datePicker.setDate(date, unit:.year, deltaMinimum:-30, deltaMaximum:30, animated:true) 
1

我@toddg雨燕4版本是:

let currentDate = Date() 
var dateComponents = DateComponents() 
let calendar = Calendar.init(identifier: .gregorian) 
dateComponents.year = -100 
let minDate = calendar.date(byAdding: dateComponents, to: currentDate) 
dateComponents.year = -13 
let maxDate = calendar.date(byAdding: dateComponents, to: currentDate) 

爲我的偉大工程!

相關問題