0

考虑一个Qdate

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

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

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

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

4

2 回答 2

2

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

  1. 从 dayOfMonth 中减去 dayOfWeek 以获得当前日期/日期。
  2. 加 5(星期五)。
  3. 如果 -ve 添加 7 或 +ve 答案是模数 7。

代码:

dayOfWeekToday = MyDate.dayOfWeek()
firstFriday = MyDate.day() - dayOfWeekToday + 5
firstFriday = (firstFriday <= 0) ? firstFriday + 7 : firstFriday % 7
于 2018-07-14T16:52:50.577 回答
1

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

dayOfWeekToday = MyDate.dayOfWeek()
firstFriday = MyDate.day() - dayOfWeekToday + 5
firstFriday = (firstFriday <= 0) ? firstFriday + 7 
                                 : (firstFriday % 7 == 0) ? 7 : firstFriday % 7
于 2021-11-07T15:51:39.203 回答