如何从给定的 QDate 获取第一个星期五?

How to obtain first Friday from a given QDate?

考虑来自

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

例如,假设我们选择2018/07/14(今天)。

如何获取所选月份(本例为7月)的第一个星期五(本例为6)?

我怀疑我们必须使用 Mydate.dayOfWeek() 计算。

可能有更简洁的解决方案,但是:

  1. 从 dayOfMonth 中减去当前 date/day 的 dayOfWeek。
  2. 加 5(周五)。
  3. 如果 -ve 加 7 或者如果 +ve 答案是模数 7。

代码:

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

添加到 Nick 的回答中,需要有一种特殊情况,即 MyDate.day() - dayOfWeekToday + 5 的结果可以被 7 整除。类似于:

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