DateUtils 提供 IsValidDateTime/Date/Time/DateDay/DateWeek/DateMonthWeek 六個驗證函數,對應各種編碼方式的參數合法性檢查,配合五個 InvalidXxxError 過程可拋出標準異常。
| 函數 | 參數 | 驗證目標 |
|---|---|---|
| IsValidDateTime | Year, Month, Day, Hour, Min, Sec, MSec | 完整日期時間 |
| IsValidDate | Year, Month, Day | 日期 |
| IsValidTime | Hour, Min, Sec, MSec | 時間 |
| IsValidDateDay | Year, DayOfYear | 年內天序數 |
| IsValidDateWeek | Year, WeekOfYear, DayOfWeek | 年周日 |
| IsValidDateMonthWeek | Year, Month, WeekOfMonth, DayOfWeek | 年月周日 |
uses DateUtils;
procedure TForm1.FormCreate(Sender: TObject);
var b: Boolean;
begin
b := IsValidDateTime(2009, 5, 21, 11, 22, 33, 999); {True}
b := IsValidDateTime(2009, 5, 21, 11, 22, 33, 9999); {False: 毫秒超範圍}
b := IsValidDate(2009, 5, 21); {True}
b := IsValidDate(2009, 5, 32); {False: 日超範圍}
b := IsValidTime(11, 22, 33, 0); {True}
b := IsValidTime(11, 22, 61, 0); {False: 秒超範圍}
b := IsValidDateDay(2009, 141); {True}
b := IsValidDateDay(2009, 366); {False: 非閏年}
b := IsValidDateWeek(2009, 21, 7); {True}
b := IsValidDateWeek(2009, 21, 8); {False: 周內天 1..7}
b := IsValidDateMonthWeek(2009, 5, 3, 7); {True}
b := IsValidDateMonthWeek(2009, 5, 3, 8); {False}
end;
InvalidDateDayError; {年內天序數無效}
InvalidDateMonthWeekError; {年月周日無效}
InvalidDateTimeError; {日期時間無效}
InvalidDateWeekError; {年周日無效}
InvalidDayOfWeekInMonthError; {月內周日無效}
配合 TryEncodeXxx 使用可實現「驗證通過再構造」或「構造失敗拋異常」兩種錯誤處理模式。