Nếu tôi có UIDatePicker và tôi muốn đặt phạm vi ngày tối thiểu và tối đa là từ ba mươi năm trước và ba mươi năm sau, tôi sẽ thiết lập như thế nào ?UIDatePicker, đặt ngày tối đa và tối thiểu dựa trên ngày hôm nay
Trả lời
Không được thử nghiệm, nhưng bạn có thể muốn một cái gì đó như thế này.
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];
m_datePicker.maximumDate = [NSDate date];
Bạn có thể sử dụng dòng mã này để thiết lập ngày max (Hôm nay).
và làm cách nào để ẩn ngày> maximumDate? – alex
Thực tế là sẽ đặt ngày tối đa thành phút chính xác mà dòng mã được thực hiện –
Nó không cho phép một ngày để chọn ngày muộn hơn ngày hôm nay nhưng người dùng sẽ thấy ngày sau đó. –
Hãy Hãy thử mã này 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];
Thích ứng với câu trả lời @ warrenm để Swift:
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
Được nhìn vào vấn đề này ngày hôm nay và đã đưa ra một giải pháp trong Swift 3 mà kéo dài 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
}
}
}
}
Phương pháp setDate
sẽ thiết lập ba giá trị (ngày, tối thiểu, tối đa) của UIDatePicker
dụ.
setMinMax
chỉ đặt giá trị tối thiểu và tối đa. Tối thiểu và tối đa được tính bằng ngày hiện tại của người chọn.
Đơn vị có thể là giá trị sau:
- .năm
- .tháng
- .day
- .hour
- .minute
- .second
Để đặt ngày bằng pl chúng tôi và trừ ba mươi năm, mã sẽ là:
var datePicker = UIDatePicker()
var date = Date()
datePicker.setDate(date, unit:.year, deltaMinimum:-30, deltaMaximum:30, animated:true)
My phiên bản nhanh chóng 4 của @toddg là:
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)
Các công trình lớn đối với tôi!
- 1. iOS 5 - Đặt ngày tối thiểu UIDatePicker thành "hôm nay"
- 2. Đặt ngày tối thiểu và tối đa trên Lịch?
- 3. Ngày tối thiểu và tối đa
- 4. xóa/ẩn các hàng bên ngoài phạm vi ngày tối thiểu/tối đa của UIDatePicker?
- 5. Làm cách nào để hạn chế ngày tối đa của ngày hôm nay?
- 6. Java: Phạm vi ngày tối thiểu và tối thiểu
- 7. Giá trị tối thiểu và tối đa của UIDatePicker có thể bao gồm thời gian không?
- 8. đặt ngày tối thiểu trong jquery datepicker
- 9. Ngày và số ngày tối đa của Lịch Richfaces
- 10. Ngày tối thiểu trong Java
- 11. Tính toán tuổi Oracle từ ngày sinh và hôm nay
- 12. so sánh ngày jpql ngày hôm nay
- 13. Tính thời gian ngày Khoảng thời gian tối thiểu, tối đa và lớn nhỏ nhất
- 14. cách đặt ngày tối thiểu cho bộ chọn ngày giờ kendo
- 15. vô hiệu hóa các ngày trong lịch jquery giữa ngày hôm nay và ngày đặt
- 16. Cách tìm Ngày Tối đa
- 17. Tắt tối thiểu hóa và tối đa hóa trên WinForm?
- 18. Kendo DatePicker Ngày phát hành tối đa
- 19. jQuery datepicker - thay đổi ngày "hôm nay"?
- 20. MySQL Chọn Ngày Bằng Hôm nay
- 21. Đếm ngày cho đến hôm nay moment.js
- 22. jQuery DatePicker Min Ngày tối đa
- 23. Ngày giờ 25 năm kể từ ngày hôm nay
- 24. WPF DatePicker mặc định ngày hôm nay
- 25. Ngày hết hạn hôm nay trong Java
- 26. Haskell tối thiểu/tối đa Double Constant
- 27. Tìm số tối thiểu và tối đa trong trăn
- 28. lăn tối thiểu và lăn tối đa để tăng C++?
- 29. Tìm giá trị tối thiểu và tối đa của hàm
- 30. Tìm tối đa, tối thiểu và trung bình trong F #
Nó sẽ không gây rối nếu bạn có cột ngày và tháng không? Nó sẽ giới hạn các tháng và ngày đến ngày hiện tại, ở dạng hiện tại của nó. Giống như hôm nay là ngày 3 tháng 6 năm 2015. Sẽ ổn thôi. Ngày sẽ bị kẹt ở giá trị tối đa 3 và tháng sẽ bị kẹt ở giá trị tối đa june – NSNoob
Không. Bạn chỉ đang suy đoán một cách mù quáng? – warrenm
Không, tôi đã thử rằng trong một ứng dụng tôi đang làm việc và tôi phải đối mặt với vấn đề tôi đã nói với bạn. Cuối cùng tôi phải đặt séc vào ngày riêng. – NSNoob