Jeśli mam UIDatePicker i chcę ustawić minimalny i maksymalny zakres dat pomiędzy trzydzieści lat temu a trzydzieści lat w przyszłości, jak mam to ustawić? ?UIDatePicker, ustawianie dat maksymalnych i minimalnych w oparciu o dzisiejszą datę
Odpowiedz
Nie testowane, ale prawdopodobnie chcesz coś takiego.
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];
Można użyć tego wiersza kodu, aby ustawić maksymalną datę (dzisiaj).
i jak mogę ukryć datę> maximumDate? – alex
Właściwie to ustawi maksymalną datę z dokładną minutą wykonania wiersza kodu. –
Nie pozwala wybrać daty później niż dzisiaj, ale użytkownik widzi już późniejsze daty. –
Proszę spróbuj tego kodu systemów iOS 8 +
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];
Adaptacja odpowiedź @ warrenm do 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
szukał w tej kwestii już dziś i pojawił się z roztworu w Swift 3, która rozciąga 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
}
}
}
}
Sposób setDate
ustawi trzy wartości (data, minimum, maksimum) przykład UIDatePicker
.
setMinMax
ustala tylko minimum i maksimum. Minimum i maksimum są obliczane na podstawie bieżącej daty gracza.
Jednostka może być następujące wartości:
- .year
- .month
- .day
- .hour
- .minute
- .second
Aby ustawić datę za pomocą pl us i minus trzydzieści lat, kod byłoby:
var datePicker = UIDatePicker()
var date = Date()
datePicker.setDate(date, unit:.year, deltaMinimum:-30, deltaMaximum:30, animated:true)
Moja Swift 4 wersja @toddg jest:
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)
Działa świetnie dla mnie!
- 1. Jak utworzyć datę UIDatePicker wyświetlania dat?
- 2. Pobierz dzisiejszą datę w Javie o północy
- 3. Znajdowanie wartości minimalnych, maksymalnych i średnich dla list zagnieżdżonych?
- 4. Jak ustawić datę UIDatePicker na inną datę?
- 5. Pobierz datę i godzinę z UIDatePicker iOS
- 6. PHP: Urodziny sprawdź dzisiejszą datę
- 7. Groovy dostaje dzisiejszą datę o minucie 00:00:00
- 8. Jak wyświetlić dzisiejszą datę w raporcie SSRS?
- 9. Ustawianie minimalnej i maksymalnej daty w kalendarzu?
- 10. Selenium IDE: Jak uzyskać dzisiejszą datę?
- 11. Jak ustawić dzisiejszą datę w datepicker tekstowym w angularjs
- 12. iOS 5 - Ustawianie minimalnej daty UIDatePicker na "dziś"
- 13. Pobierz dzisiejszą datę w JSP i porównaj ją ze zmienną Data
- 14. Jak uzyskać dzisiejszą datę w środowisku wsadowym Windows?
- 15. Jak uzyskać dzisiejszą datę rok temu w języku C#?
- 16. Jak zwrócić dzisiejszą datę do zmiennej w Oracle
- 17. Korzystanie kontrolę CompareValidator porównać datę wejścia użytkownika z dzisiejszą datą
- 18. Plik wsadowy do utworzenia folderu w oparciu o bieżącą datę i czas
- 19. Ustawianie wysokości i szerokości przeglądarki BIRT dynamicznie w oparciu o zawartość
- 20. Pobierz aktualną datę i datę po dwóch miesiącach w php
- 21. Dławienie w oparciu o zawartość
- 22. usunąć/ukryć wiersze poza minimalnym/maksymalnym zakresem dat UIDatePicker?
- 23. Łączenie elementów (wklejanie) w oparciu o indeksy
- 24. DateTimePicker wyświetla dzisiejszą datę zamiast wyświetlać jej aktualną wartość.
- 25. Łączenie pól w oparciu o grupę w LINQ
- 26. Minimalna wartość maksymalnych wartości w podsegmentach ... w złożoności O (n)
- 27. Pobierz najnowszą datę z tablicy dat
- 28. UIDatePicker w PopoverView na iPadzie
- 29. Ogranicz datę w datacku jquery w oparciu o inny datepicker lub pole tekstowe.
- 30. Jquery datepicker ograniczać daty data drugiego pola w oparciu o wybraną datę w pierwszym polu Data
Czy to nie zepsułoby się, jeśli masz również kolumnę dni i miesięcy? Ogranicza miesiące i dni do bieżącej daty, w jej obecnej formie. Jak dziś jest 3 czerwca 2015 roku. Lata będą w porządku. Dzień utknie przy maksymalnej wartości 3, a miesiąc utknie na maksimum czerwca – NSNoob
Nie. Czy spekulujesz na ślepo? – warrenm
Nie, próbowałem tego w aplikacji, nad którą pracuję, i stanąłem przed problemem, który ci powiedziałem. Koniec końców musiałem osobno wystawić czeki. – NSNoob