C++ Builder 參考手冊 ? System::Dateutils ? IsValidDateWeek
判斷年、這個年的第幾周、這個周的第幾天是否有效 (ISO 8601)
頭文件:#include <System.DateUtils.hpp>
命名空間:System::Dateutils
函數(shù)原型:
bool __fastcall IsValidDateWeek(
const System::Word AYear,
const System::Word AWeekOfYear,
const System::Word ADayOfWeek);
參數(shù):
- AYear:年,0001 - 9999;
- AWeekOfYear:這一年的第幾周,1 - 52 或 1 - 53;
- ADayOfWeek:這一周的天,1 - 7;
返回值:
- true:參數(shù)年、這個年的第幾周、這個周的第幾天有效;
- false:參數(shù)的年、周、天無效;
- 按照 ISO 8601 標(biāo)準(zhǔn) (中國使用這個國際標(biāo)準(zhǔn)),一周 7 天:DayMonday ~ DaySunday
星期一:DayMonday = 1
星期二:DayTuesday = 2
星期三:DayWednesday = 3
星期四:DayThursday = 4
星期五:DayFriday = 5
星期六:DaySaturday = 6
星期天:DaySunday = 7
如果這一周跨兩個月,由于一周七天,無法兩等分,這一周在兩個月的部分必然天數(shù)不同,在哪個月的天數(shù)多,這一周就歸屬于哪個月,跨年也是如此。另一種相同結(jié)論的說法:一周正中間一天即周四在哪個月,這一周就屬于哪個月,數(shù)一數(shù)一個月有幾個周四,這一個月一共就有幾周。這說明:
? 一周的七天可能不在同一個月,也可能不在同一年;
? 一個月的最前和最后幾天按照周的說法,可能不在這個月;
? 一年的最前和最后的幾天按照周的說法,可能不在這一年。 - 一個月最多 5 周:如果一個月的第一天是周四,那么這個月的前 4 天 (1 - 4 日) 與上個月的后 3 天組成這個月的第一周,接下來的完整的 3 周 (21 天) 都在這個月,這樣這個月前 25 天就是 1 - 4 周,如果這個月還剩下的天數(shù)夠 4 天,就能再占一周,這樣只要一個月有 29 天,就有可能占 5 個周。

根據(jù)上面日歷截圖的第一行這一周:2021/12/27 - 2022/1/2 這一周,有5天在2021年,2天在2022年,在2021年12月的天數(shù)多,那么這一周就屬于2021年12月,2022/1/1 和 2022/1/2 在 2021年的第52周,2021年12月的第5周,這一周的第6天和第7天,2022/1/3 在2022年的第1周,2022年1月份的第1周,這一周的第1天。
相關(guān):
- 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 ? IsValidDateWeek