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

Delphi 構建日期時間:EncodeDateTime/TryEncodeDateTime 系列函數全解

     編輯:Delphi

從組件構建 TDateTime:SysUtils 與 DateUtils 兩套 Encode/TryEncode 函數

Delphi 提供兩組構建日期時間的函數:SysUtils 基礎版與 DateUtils 進階版(支援年/周/日序數)。Try 版本返回 Boolean 不拋異常,適合用戶輸入驗證。

函數對照表

單元函數說明
SysUtilsEncodeDateTime年月日時分秒毫秒 → TDateTime
EncodeDate年月日 → TDateTime (時間歸零)
EncodeTime時分秒毫秒 → TDateTime (日期歸零)
DateUtilsEncodeDateDay年 + 年內天序數 → TDateTime
EncodeDateWeek年 + 周序數 [+ 周內天] → TDateTime
EncodeDateMonthWeek年 + 月 + 月內周序數 + 周內天 → TDateTime
EncodeDayOfWeekInMonth年 + 月 + 月內周序數 + 周內天 → TDateTime
TryEncodeDateTime安全版 EncodeDateTime,參數無效返回 False
TryEncodeDateDay/Week/MonthWeek/DayOfWeekInMonth對應安全版

完整測試代碼

uses DateUtils;
procedure TForm1.FormCreate(Sender: TObject);
var t: TDateTime; s: string;
begin
  t := EncodeDateTime(2009, 5, 20, 11, 22, 33, 999);
  s := FormatDateTime('yyyy-m-d h:n:s:zzz', t);  {2009-5-20 11:22:33:999}

  t := EncodeDate(2009, 5, 20);
  s := FormatDateTime('yyyy-m-d h:n:s:zzz', t);  {2009-5-20 0:0:0:000}

  t := EncodeTime(11, 22, 33, 999);
  s := FormatDateTime('h:n:s:zzz', t);           {11:22:33:999}

  t := EncodeDateDay(2009, 140);                 {2009-5-20}
  t := EncodeDateWeek(2009, 21);                 {2009-5-18 周一}
  t := EncodeDateWeek(2009, 21, 3);              {2009-5-20 周三}
  t := EncodeDateMonthWeek(2009, 5, 3, 3);       {2009-5-20}
  t := EncodeDayOfWeekInMonth(2009, 5, 3, 3);    {2009-5-20}

  if TryEncodeDateTime(2009, 5, 20, 11, 22, 33, 999, t) then
    s := FormatDateTime('yyyy-m-d h:n:s:zzz', t);
  {其餘 Try 版本類似}
end;

應用場景: 日曆控件數據綁定、定時任務觸發時間計算、業務邏輯中的日期推算(如「每月第 3 個周三」)。

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