Я пытаюсь воспроизвести некоторые функциональные возможности часов по умолчанию, когда я разрешаю пользователям выбирать частоту повторения для сигнала тревоги. Проблема в том, что различные настройки NSCalendar будут давать вам разные имена для дней недели. Как сохранить выбранные дни недели таким образом, чтобы, если пользователь меняет календарь, частота всегда выпадает в правый день недели?Лучший способ сохранить день недели с помощью NSDate и NSDateFormatter
ответ
Одним из решений было бы проверить, изменился ли календарь каждый раз, когда приложение выходит на передний план, и если да, внесите соответствующие изменения. Наверное, это не самое элегантное решение, ни лучшая практика, но он мог бы выполнить эту работу.
Возьмите (long) [dateYouWantToRemember timeIntervalSince1970]
и сохраните это в файле недвижимости или в таком виде. (Вы можете использовать timeIntervalSinceReferenceDate, но номер 1970 года - это «дата в эпоху UNIX» и более стандартизован - вы можете найти конвертеры онлайн, чтобы проверить его.)
Позже, под (потенциально) разным календарем, сделайте [NSDate dateWithTimeIntervalSince1970:theLongYouStored]
, и вы восстановит дату в новом календаре.
Теперь используйте NSCalendar/NSDateComponents, чтобы узнать новый порядковый день недели этой даты и используйте [NSDateFormatter weekdaySymbols]
, чтобы получить список названий дней недели. Индексируйте список с порядковым номером, чтобы получить новое имя дня. Используйте NSDateComponents для выполнения арифметических действий по датам, чтобы выбрать следующую дату в тот день недели, если это необходимо для вашего приложения.
(К будущим читателям: этот ответ был просто опущен из-за злобы, и указанный нисходящий поток не является отражением превосходного совета, содержащегося в ответе). –
- 1. Последний день недели с NSDateFormatter
- 2. NSDate месяц и день недели локализованные
- 3. NSDateFormatter: неделя года и первый день недели
- 4. Получить первый день и последний день недели
- 5. Лучший способ сохранить время недели
- 6. Как получить день недели с помощью NSDateFormatter и показать с помощью NSLog в iOS?
- 7. NSDate получает конкретный день недели?
- 8. NSDate и NSDateFormatter несовместимого
- 9. Изменить язык для NSDate день недели и месяц
- 10. Лучший день недели
- 11. NSDateFormatter форматировать недели с датой
- 12. Как получить День недели от NSDate
- 13. NSDate и NSDateFormatter вопросы
- 14. Strange NSDate и поведение NSDateFormatter
- 15. Числовое значение: день недели
- 16. Как найти будний день с сегодняшнего дня с помощью NSDate?
- 17. Лучший способ сохранить массив изображений?
- 18. NSDate недели
- 19. iOS NSDate и поведение NSDateFormatter
- 20. Как получить месяц и день от NSDate?
- 21. Как получить день недели с помощью NSDate и показать с помощью NSLog в iOS?
- 22. NSDate Неверный день
- 23. NSDateFormatter уменьшается день даты
- 24. NSDateFormatter - 1 день неверен?
- 25. NSString для преобразования NSDate .. есть лучший способ?
- 26. Проблема преобразования NSDate с NSDateFormatter
- 27. iphone NSDate с NSDateFormatter Проблема
- 28. Разделить NSDate на день и время
- 29. NSDate от NSDateFormatter
- 30. NSDate неправильный выход, когда дополнительный день NSDate
Предполагая, что вы придерживаетесь 7-дневного григорианского календаря, просто сохраните числовое значение для дня недели. –
@HotLicks проблема в том, что я не могу придерживаться одного календаря. Я не могу надежно предсказать, какие настройки у людей будут. – InkGolem
Если вы даже не можете принять григорианский календарь (т. Е. Вы даже не знаете, является ли это 7-дневной неделей), я не знаю, как вы можете ожидать, чтобы сохранить выбранный день недели. –