如何从给定的 QDate 获取第一个星期五?
How to obtain first Friday from a given QDate?
考虑来自
的 Qdate
QDate Mydate = ui->dateEdit->date();
例如,假设我们选择2018/07/14
(今天)。
如何获取所选月份(本例为7月)的第一个星期五(本例为6)?
我怀疑我们必须使用 Mydate.dayOfWeek()
计算。
可能有更简洁的解决方案,但是:
- 从 dayOfMonth 中减去当前 date/day 的 dayOfWeek。
- 加 5(周五)。
- 如果 -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
考虑来自
的Qdate
QDate Mydate = ui->dateEdit->date();
例如,假设我们选择2018/07/14
(今天)。
如何获取所选月份(本例为7月)的第一个星期五(本例为6)?
我怀疑我们必须使用 Mydate.dayOfWeek()
计算。
可能有更简洁的解决方案,但是:
- 从 dayOfMonth 中减去当前 date/day 的 dayOfWeek。
- 加 5(周五)。
- 如果 -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