Как получить первую пятницу с заданной QDate?

Рассмотрим Qdate от

QDate Mydate = ui->dateEdit->date();

Например, предположим, что мы выбираем 2018/07/14 (сегодня).

Как получить день первой пятницы (в данном случае 6) в выбранный месяц (в данном случае июль)?

Я подозреваю, что мы должны использовать Mydate.dayOfWeek() вычисления.

2 ответа

Решение

Вероятно, есть более точное решение, но:

  1. Вычтите dayOfWeek для текущей даты / дня из dayOfMonth.
  2. Добавить 5 (на пятницу).
  3. Если -ve добавить 7 или если +ve ответ является модулем 7.

Код:

dayOfWeekToday = MyDate.dayOfWeek()
firstFriday = MyDate.day() - dayOfWeekToday + 5
firstFriday = (firstFriday <= 0) ? firstFriday + 7 : firstFriday % 7

Добавляя к ответу Ника, должен быть особый случай, когда результат MyDate.day() - dayOfWeekToday + 5 делится на 7. Примерно так:

      dayOfWeekToday = MyDate.dayOfWeek()
firstFriday = MyDate.day() - dayOfWeekToday + 5
firstFriday = (firstFriday <= 0) ? firstFriday + 7 
                                 : (firstFriday % 7 == 0) ? 7 : firstFriday % 7
Другие вопросы по тегам