确定聚会日期

实践练习C++17

简介

伴侣每月都会与好友聚会。两人日程繁忙,很难选择时间,因此会向同样忙碌的你确认候选日期:

  • “下个月第一个星期五可以吗?”
  • “第三个星期三呢?”
  • “或许最后一个星期日?”

本月对方提出:

  • “我想在 teenth 星期四见面,可以吗?”

你不明白 teenth 是什么。对方解释,这是自创概念,指日期英文以 -teenth 结尾的日子:

  • 13 日,thirteenth。
  • 14 日,fourteenth。
  • 15 日,fifteenth。
  • 16 日,sixteenth。
  • 17 日,seventeenth。
  • 18 日,eighteenth。
  • 19 日,nineteenth。

这正好连续七天,因此每个月的每种星期都恰好有一个 teenth 日期。

理解后,你查看日历,发现当月 teenth 星期四没有安排,于是愉快地确认了时间。

任务说明

给定年、月、星期几及周次规则,确定聚会的具体日期。

周次有六种:first、second、third、fourth、last、teenth。

例如,2018 年 1 月的第一个星期一是 2018 年 1 月 1 日。

其他例子:

  • 2019 年 8 月第三个星期二:8 月 20 日。
  • 2020 年 5 月 teenth 星期三:5 月 13 日。
  • 2021 年 7 月第四个星期日:7 月 25 日。
  • 2022 年 11 月最后一个星期四:11 月 24 日。
  • 1953 年 8 月 teenth 星期六:8 月 15 日。

Teenth 规则

指当月 13 至 19 日这七天,因为它们的英文日期都以 -teenth 结尾。

要找 1953 年 8 月的 teenth 星期六,可以查看日历:

    August 1953
Su Mo Tu We Th Fr Sa
                   1
 2  3  4  5  6  7  8
 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

可知结果是 1953 年 8 月 15 日。