Как получить первую пятницу с заданной QDate?
Рассмотрим Qdate
от
QDate Mydate = ui->dateEdit->date();
Например, предположим, что мы выбираем 2018/07/14
(сегодня).
Как получить день первой пятницы (в данном случае 6) в выбранный месяц (в данном случае июль)?
Я подозреваю, что мы должны использовать Mydate.dayOfWeek()
вычисления.
2 ответа
Решение
Вероятно, есть более точное решение, но:
- Вычтите dayOfWeek для текущей даты / дня из dayOfMonth.
- Добавить 5 (на пятницу).
- Если -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