NSE*_*ion 43 objective-c nsdate ios nsdatepicker
我想从日期选择器获取最小和最大日期,但最小日期应为当前日期的" - 18",最大日期应为当前日期的" - 100".
假设当前年份是2018年,那么我想要最小日期2000和最大日期1918.
到目前为止我所做的是:
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorian components:NSYearCalendarUnit fromDate:[NSDate date]];
NSInteger year = [components year];
int mindt = year - 18;
int maxdt = year -100;
// NSDate * MinDate = [components year] - 18;
// NSDate * MaxDate = [components year] - 100;
// self.datePicker.minimumDate = MinDate;
// self.datePicker.maximumDate = MaxDate;
Run Code Online (Sandbox Code Playgroud)
但我不能得到这个整数到我的日期格式..
til*_*ilo 70
试试这个:
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *currentDate = [NSDate date];
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setYear:-18];
NSDate *minDate = [gregorian dateByAddingComponents:comps toDate:currentDate options:0];
[comps setYear:-150];
NSDate *maxDate = [gregorian dateByAddingComponents:comps toDate:currentDate options:0];
[comps release];
self.datePicker.minimumDate = minDate;
self.datePicker.maximumDate = maxDate;
Run Code Online (Sandbox Code Playgroud)
它可以很容易地翻译成Swift 4.2:
let calendar = Calendar(identifier: .gregorian)
let currentDate = Date()
var components = DateComponents()
components.calendar = calendar
components.year = -18
components.month = 12
let maxDate = calendar.date(byAdding: components, to: currentDate)!
components.year = -150
let minDate = calendar.date(byAdding: components, to: currentDate)!
picker.minimumDate = minDate
picker.maximumDate = maxDate
Run Code Online (Sandbox Code Playgroud)
Rah*_*ade 23
看看这个Swift版本.用户负值( - )减去和正值添加日期组件.
1.设置最短日期
yourDatePicker.minimumDate = Calendar.current.date(byAdding: .year, value: -1, to: Date())
Run Code Online (Sandbox Code Playgroud)
2.设置最长日期
yourDatePicker.maximumDate = Calendar.current.date(byAdding: .year, value: 1, to: Date())
Run Code Online (Sandbox Code Playgroud)
Kin*_*ard 14
在Swift 2.1中:
let currentDate: NSDate = NSDate()
let calendar: NSCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
// let calendar: NSCalendar = NSCalendar.currentCalendar()
calendar.timeZone = NSTimeZone(name: "UTC")!
let components: NSDateComponents = NSDateComponents()
components.calendar = calendar
components.year = -18
let minDate: NSDate = calendar.dateByAddingComponents(components, toDate: currentDate, options: NSCalendarOptions(rawValue: 0))!
components.year = -150
let maxDate: NSDate = calendar.dateByAddingComponents(components, toDate: currentDate, options: NSCalendarOptions(rawValue: 0))!
self.dateOfBirthUIDatePicker.minimumDate = minDate
self.dateOfBirthUIDatePicker.maximumDate = maxDate
print("minDate: \(minDate)")
print("maxDate: \(maxDate)")
Run Code Online (Sandbox Code Playgroud)
cld*_*drr 13
这就是2017年的样子(Swift 3)
var components = DateComponents()
components.year = -100
let minDate = Calendar.current.date(byAdding: components, to: Date())
components.year = -18
let maxDate = Calendar.current.date(byAdding: components, to: Date())
datePicker.minimumDate = minDate
datePicker.maximumDate = maxDate
Run Code Online (Sandbox Code Playgroud)
swi*_*eek 13
extension UIDatePicker {
func set18YearValidation() {
let currentDate: Date = Date()
var calendar: Calendar = Calendar(identifier: Calendar.Identifier.gregorian)
calendar.timeZone = TimeZone(identifier: "UTC")!
var components: DateComponents = DateComponents()
components.calendar = calendar
components.year = -18
let maxDate: Date = calendar.date(byAdding: components, to: currentDate)!
components.year = -150
let minDate: Date = calendar.date(byAdding: components, to: currentDate)!
self.minimumDate = minDate
self.maximumDate = maxDate
} }
Run Code Online (Sandbox Code Playgroud)
小智 7
Swift 3.0
let gregorian: NSCalendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian)!
let currentDate: Date = Date()
let components: NSDateComponents = NSDateComponents()
components.year = -150
let minDate: Date = gregorian.date(byAdding: components as DateComponents, to: currentDate, options: NSCalendar.Options(rawValue: 0))!
components.year = -16
let maxDate: Date = gregorian.date(byAdding: components as DateComponents, to: currentDate, options: NSCalendar.Options(rawValue: 0))!
self.datepicker.minimumDate = minDate
self.datepicker.maximumDate = maxDate
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67791 次 |
| 最近记录: |