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



考虑来自的Qdate

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

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

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

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

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

  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

除了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

最新更新