首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 日期時間合法性驗證:IsValidDateTime 系列函數

     編輯:Delphi

輸入驗證利器:八個 IsValidXxx 函數防止無效日期構造

DateUtils 提供 IsValidDateTime/Date/Time/DateDay/DateWeek/DateMonthWeek 六個驗證函數,對應各種編碼方式的參數合法性檢查,配合五個 InvalidXxxError 過程可拋出標準異常。

驗證函數對照

函數參數驗證目標
IsValidDateTimeYear, Month, Day, Hour, Min, Sec, MSec完整日期時間
IsValidDateYear, Month, Day日期
IsValidTimeHour, Min, Sec, MSec時間
IsValidDateDayYear, DayOfYear年內天序數
IsValidDateWeekYear, WeekOfYear, DayOfWeek年周日
IsValidDateMonthWeekYear, 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 使用可實現「驗證通過再構造」或「構造失敗拋異常」兩種錯誤處理模式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved