IsValidDateMonthWeek - C++ Builder

C++ Builder 参考手册 ➙ System::Dateutils ➙ IsValidDateMonthWeek


判断年、月、这个月的周、这个周的第几天是否有效 (ISO 8601)

头文件:#include
命名空间:System::Dateutils
函数原型:

bool __fastcall IsValidDateMonthWeek(
     const System::Word AYear,
     const System::Word AMonth,
     const System::Word AWeekOfMonth,
     const System::Word ADayOfWeek);

参数:

  • AYear:年,0001 - 9999;
  • AMonth:月,1 - 12;
  • AWeekOfMonth:这个月的周,1 - 5;
  • ADayOfWeek:这一周的天,1 - 7;

返回值:

  • true:参数年、月、这个月的周、这个周的第几天有效;
  • false:参数的年、月、周、天无效;
  • 按照 ISO 8601 标准 (中国使用这个国际标准),一周 7 天:DayMonday ~ DaySunday
    星期一:DayMonday = 1
    星期二:DayTuesday = 2
    星期三:DayWednesday = 3
    星期四:DayThursday = 4
    星期五:DayFriday = 5
    星期六:DaySaturday = 6
    星期天:DaySunday = 7
    如果这一周跨两个月,由于一周七天,无法两等分,这一周在两个月的部分必然天数不同,在哪个月的天数多,这一周就归属于哪个月,跨年也是如此。另一种相同结论的说法:一周正中间一天即周四在哪个月,这一周就属于哪个月,数一数一个月有几个周四,这一个月一共就有几周。这说明:
    • 一周的七天可能不在同一个月,也可能不在同一年;
    • 一个月的最前和最后几天按照周的说法,可能不在这个月;
    • 一年的最前和最后的几天按照周的说法,可能不在这一年。
  • 一个月最多 5 周:如果一个月的第一天是周四,那么这个月的前 4 天 (1 - 4 日) 与上个月的后 3 天组成这个月的第一周,接下来的完整的 3 周 (21 天) 都在这个月,这样这个月前 25 天就是 1 - 4 周,如果这个月还剩下的天数够 4 天,就能再占一周,这样只要一个月有 29 天,就有可能占 5 个周。

根据上面日历截图的第一行这一周:2021/12/27 - 2022/1/2 这一周,有5天在2021年,2天在2022年,在2021年12月的天数多,那么这一周就属于2021年12月,2022/1/1 和 2022/1/2 在 2021年的第52周,2021年12月的第5周,这一周的第6天和第7天,2022/1/3 在2022年的第1周,2022年1月份的第1周,这一周的第1天。

  • 通过源码发现 IsValidDateMonthWeek 这个函数写的比较简略,只是判断了 1 ≤ 年 ≤ 9999、1 ≤ 月 ≤ 12、1 ≤ 周 ≤ 5、1 ≤ 天 ≤ 7,并无其他额外的判断。

相关:

  • System::Dateutils::DateToISO8601
  • System::Dateutils::DecodeDateMonthWeek
  • System::Dateutils::DecodeDateWeek
  • System::Dateutils::DecodeDayOfWeekInMonth
  • System::Dateutils::EncodeDateMonthWeek
  • System::Dateutils::EncodeDateWeek
  • System::Dateutils::EncodeDayOfWeekInMonth
  • System::Dateutils::IsAM
  • System::Dateutils::IsPM
  • System::Dateutils::IsInLeapYear
  • System::Dateutils::ISO8601ToDate
  • System::Dateutils::IsValidDate
  • System::Dateutils::IsValidTime
  • System::Dateutils::IsValidDateDay
  • System::Dateutils::IsValidDateMonthWeek
  • System::Dateutils::IsValidDateTime
  • System::Dateutils::IsValidDateWeek
  • System::Dateutils::NthDayOfWeek
  • System::Dateutils::TryEncodeDateMonthWeek
  • System::Dateutils::TryEncodeDateWeek
  • System::Dateutils::TryEncodeDayOfWeekInMonth
  • System::Dateutils::TryISO8601ToDate
  • System::Dateutils::WeekOf
  • System::Dateutils::WeeksInAYear
  • System::Dateutils::WeeksInYear
  • System::Dateutils
  • System::Sysutils::IsLeapYear
  • System::Sysutils

C++ Builder 参考手册 ➙ System::Dateutils ➙ IsValidDateMonthWeek

你可能感兴趣的:(IsValidDateMonthWeek - C++ Builder)