Самый простой способ получить представление NSDate о «следующих 7 утра, которые произойдут» в Какао? - PullRequest
3 голосов
/ 27 мая 2010

Я полагаю, что могу достичь того, что хочу, используя NSCalendar и NSDateComponents, но это может привести к следующему:

  • Получи "сейчас"
  • Создайте NSDateComponents из "сейчас".
  • Если «сейчас» до 7 утра, то использовать сегодняшнюю дату.
  • Если «сейчас» после 7:00, используйте завтрашнюю дату.
    • Если сегодня последний день месяца, увеличьте месяц, установите день равным 1.
      • Если это был декабрь, также увеличьте год на 1.
  • Установите часы, минуты, секунды.
  • Создать новый NSDate.

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

Есть ли простой способ попросить "следующий встречающийся 7 утра"?

1 Ответ

5 голосов
/ 27 мая 2010

Я не пробовал, но думаю, что это сработает:

  • Get Now date.
  • Создать NSDateComponents с этого момента.
  • Установите часовой компонент на 7.
  • Преобразование компонентов даты 7 утра обратно в NSDate.
  • Если дата 7 утра позже, чем Сейчас, все готово.
  • В противном случае используйте -[NSCalendar dateByAddingComponents:options:], чтобы перенести дату 7 утра на один день.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...