2010-06-17 3 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에 고착 될 것이고 월이 최대 값으로 정체 될 것입니다. – NSNoob

+0

번호 맹목적으로 추측하고 있습니까? – warrenm

+0

아니요, 저는 작업중인 앱에서 시도해 보았습니다. 제가 말씀 드린 문제에 직면했습니다. 결국 나는 날짜별로 수표를 써야했다. – NSNoob

16
m_datePicker.maximumDate = [NSDate date]; 

당신은 최대 날짜 (오늘)을 설정하는 코드 줄을 사용할 수 있습니다.

+0

어떻게 날짜> 최대 날짜를 숨길 수 있습니까? – alex

+0

실제로 최대 날짜를 해당 코드 행이 실행되는 정확한 분으로 설정합니다. –

+0

오늘보다 늦게 날짜를 선택할 수는 없지만 사용자는 나중에 날짜를 보게됩니다. –

1

이 코드 스위프트에 @를 warrenm의 답변을 적응 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

시도하십시오

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

오늘이 문제를보고 UIDatePicker를 확장 스위프트 3의 해결책을 함께했습니다.

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
  • .day
  • .hour
  • .minute
  • .second

:

유닛은 다음과 같은 값이 될 수 날짜를 pl로 설정하려면, 우리와 마이너스 삼십년이 코드는 다음과 같습니다 @toddg의

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

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

내 빠른 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) 

나를 위해 좋은 작품!

관련 문제