Как запросить у пользователя точную дату в формате даты - PullRequest
0 голосов
/ 02 января 2019

Итак, у меня есть программа, о которой мне нужно узнать у пользователя дату и время.Но эта дата должна быть либо в будущем, либо в очень далеком прошлом.И я попробовал UIDatePicker, но обнаружил, что средство выбора даты не лучший способ решить эту проблему, потому что она требует большой прокрутки, и она не загружается после определенной даты для некоторыхпричина.Я думал о UIPickerView, который запрашивает год, месяц, день и время.Но я не знаю, как это сделать, потому что давайте скажем, что сентябрь - это всего лишь 30 дней, поэтому как я могу помешать пользователю выбрать 31. Поэтому, если кто-нибудь сможет мне помочь, это было бы удивительно.И если у вас есть какие-либо вопросы или вам нужен код, просто спросите.Да, и, кстати, я хотел бы, чтобы это было в формате даты, где я могу сравнить ее с другой датой.

1 Ответ

0 голосов
/ 02 января 2019

Учитывая year и month, вы можете рассчитать массив возможных day значений, которые будут предоставлены вашему сборщику, следующим образом:

let calendar = Calendar.current
let components = DateComponents(year: year, month: month, day: 1)
guard let date = calendar.date(from: components),
    let range = calendar.range(of: .day, in: .month, for: date) else { return }
let days = Array(range)

Мне бы хотелось, чтобы в формате даты я мог сравнить ее с другой датой.

Если у вас есть year, month и day, hour (преобразованы в 24-часовое значение от 0 до 23), вы можете построить объект Date следующим образом:

let calendar = Calendar.current
let components = DateComponents(year: year, month: month, day: day, hour: hour, minute: minute)
guard let date = calendar.date(from: components) else { return }

Теперь date можно сравнить с любым другим Date объектом.

...