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

Delphi 修改日期時間組件:RecodeDateTime/RecodeYear... 系列函數

     編輯:Delphi

精確替換日期時間部分:十一個 RecodeXxx 函數與安全版 TryRecodeDateTime

RecodeDateTime 及其細粒度版本 RecodeYear/Month/Day/Hour/Minute/Second/MilliSecond 返回新 TDateTime,將指定部分替換為新值,其余部分保持不變。TryRecodeDateTime 返回 Boolean 不拋異常。

函數簽名

RecodeDateTime  (AValue; Year, Month, Day, Hour, Min, Sec, MSec)
RecodeDate      (AValue; Year, Month, Day)
RecodeTime      (AValue; Hour, Min, Sec, MSec)
RecodeYear      (AValue; Year)
RecodeMonth     (AValue; Month)
RecodeDay       (AValue; Day)
RecodeHour      (AValue; Hour)
RecodeMinute    (AValue; Minute)
RecodeSecond    (AValue; Second)
RecodeMilliSecond(AValue; MSec)
TryRecodeDateTime(AValue; Year, Month, Day, Hour, Min, Sec, MSec; out ANewValue)

測試代碼

uses DateUtils;
procedure TForm1.FormCreate(Sender: TObject);
const FMT = 'yyyy-m-d h:n:s:z';
var t1, t2: TDateTime;
begin
  t1 := EncodeDateTime(2001, 1, 1, 1, 1, 1, 1);

  t2 := RecodeDateTime(t1, 2009, 5, 21, 11, 22, 33, 999);  ShowMessage(FormatDateTime(FMT, t2)); {2009-5-21 11:22:33:999}
  t2 := RecodeDate(t1, 2009, 5, 21);                           ShowMessage(FormatDateTime(FMT, t2)); {2009-5-21 1:1:1:1}
  t2 := RecodeTime(t1, 11, 22, 33, 999);                       ShowMessage(FormatDateTime(FMT, t2)); {2001-1-1 11:22:33:999}
  t2 := RecodeYear(t1, 2009);                                  ShowMessage(FormatDateTime(FMT, t2)); {2009-1-1 1:1:1:1}
  t2 := RecodeMonth(t1, 5);                                    ShowMessage(FormatDateTime(FMT, t2)); {2001-5-1 1:1:1:1}
  t2 := RecodeDay(t1, 21);                                     ShowMessage(FormatDateTime(FMT, t2)); {2001-1-21 1:1:1:1}
  t2 := RecodeHour(t1, 11);                                    ShowMessage(FormatDateTime(FMT, t2)); {2001-1-1 11:1:1:1}
  t2 := RecodeMinute(t1, 22);                                  ShowMessage(FormatDateTime(FMT, t2)); {2001-1-1 1:22:1:1}
  t2 := RecodeSecond(t1, 33);                                  ShowMessage(FormatDateTime(FMT, t2)); {2001-1-1 1:1:33:1}
  t2 := RecodeMilliSecond(t1, 999);                            ShowMessage(FormatDateTime(FMT, t2)); {2001-1-1 1:1:1:999}

  if TryRecodeDateTime(t1, 2009, 5, 21, 11, 22, 33, 999, t2) then
    ShowMessage(FormatDateTime(FMT, t2));
end;

應用場景: 將用戶輸入的部分日期時間合併(如日期選擇器 + 時間選擇器)、定時任務調整觸發時刻、數據清洗統一時間精度。

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