Intereting Posts
Когда приложение обновляется, это просто бинарный файл, который обновляется, а не файлы данных? Сервер iOS + Heroku Parse: «для этого пользователя недействителен аутентификация Facebook». jsoncpp работает медленно после обновления цели развертывания iOS с 6.0 до 7.0 О MpMoviePlayerViewController CGcontext и drawRect не рисование Xcode не распознает фреймворки правильно Автозапуск iPad для портрета и пейзажа Получение имени пользователя после аутентификации с помощью предиката coredata Выбор и отмена выбора UITableViewCells – Swift Как добавить еще 10 записей в `UITableView`, когда пользователь прокручивается в нижней части таблицыView Интерактивный переход с ViewControllers Получение данных из API, необходимо фильтровать результаты Есть ли способ удалить вкладку на вкладке динамически при использовании приложения в iOS? iOS7 viewController и MPMoviePlayerViewController Rotation Objective-C: проблемы с настройкой логического значения?

в тот же день прошлого месяца ios

Есть ли способ использования NSCalender, который вы можете получить в тот же день прошлого месяца?

Я использую календарь, который показывает пользователю 1 месяц, как календарь карандаша iPad, когда они нажимают кнопку, которую я хочу переместить в предыдущий месяц, но должны выбрать тот же день, что и раньше.

Я хочу просто сделать

[components setMonth:([components month] - 1)]; 

но это создаст проблемы, когда я перехожу из месяца с 31 день в месяц с 30 днями, а выбранный день – 31-й.

Я смог найти примеры для Android, но не iOS.

пример андроида

Любая помощь будет оценена

Проверьте эту ссылку .

Речь идет о добавлении одного месяца, но вы, вероятно, могли бы сделать то же самое с вычитанием.

+ Изменить

 [dateComponents setMonth:1]; 

в

 [dateComponents setMonth:-1]; 

Кажется, нет очевидного «правильного» ответа и никакого «встроенного» ответа.

Поскольку «простая» идея Криса может привести к недействительным датам, вам, возможно, придется обращаться с краями.

Псевдокод для работы с день-месяц-год:

  1. если месяц = ​​декабрь начинается с дня-1 (год-1), иначе день- (месяц-1) -лет [с использованием dateComponents]
  2. проверьте, действительно ли это действительная дата (используя NSDateFormatter, как в этом вопросе
  3. повторите вычитание в один день, пока не достигнете действительной даты

Другая идея:

 prevMonthDate = startDate; Repeat prevMonthDate = prevMonthDate - 1 day Until (Month(prevMonthDate) < Month(startDate) Or Year(prevMonthDate) < Year(startDate)) And (Day(prevMonthDate) <= Day(startDate)) 

Для этого требуется работа с NSDate и NSDateComponents, ознакомьтесь с руководством по программированию даты и времени .