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

Delphi 獲取週期邊界:StartOf/EndOf 系列函數詳解

     編輯:Delphi

日期時間週期起止點:年/月/周/日兩組 API(參數類型不同)

DateUtils 提供兩組函數:StartOfAxxx/EndOfAxxx 接收數值參數(年、月、周序數、日序數);StartOfTheXxx/EndOfTheXxx 接收 TDateTime 參數。返回對應週期的起始/結束瞬間(含毫秒)。

函數對照表

數值參數版TDateTime 參數版含義
StartOfAYear(Year)StartOfTheYear(DateTime)年初 0:0:0.000
EndOfAYear(Year)EndOfTheYear(DateTime)年終 23:59:59.999
StartOfAMonth(Year, Month)StartOfTheMonth(DateTime)月初 0:0:0.000
EndOfAMonth(Year, Month)EndOfTheMonth(DateTime)月末 23:59:59.999
StartOfAWeek(Year, WeekOfYear)StartOfTheWeek(DateTime)周一 0:0:0.000
EndOfAWeek(Year, WeekOfYear)EndOfTheWeek(DateTime)周日 23:59:59.999
StartOfADay(Year, DayOfYear)StartOfTheDay(DateTime)當日 0:0:0.000
EndOfADay(Year, DayOfYear)EndOfTheDay(DateTime)當日 23:59:59.999

測試代碼 (基準時間 2009-5-20 11:22:33)

uses DateUtils;
procedure TForm1.FormCreate(Sender: TObject);
var dt, t1, t2, t3, t4: TDateTime; s1, s2, s3, s4: string;
begin
  dt := StrToDateTime('2009-5-20 11:22:33');

  {年}
  t1 := StartOfAYear(2009);  t2 := StartOfTheYear(dt);
  t3 := EndOfAYear(2009);    t4 := EndOfTheYear(dt);
  {結果: 2009-1-1 0:0:0.000 / 2009-12-31 23:59:59.999}

  {月}
  t1 := StartOfAMonth(2009, 5);  t2 := StartOfTheMonth(dt);
  t3 := EndOfAMonth(2009, 5);    t4 := EndOfTheMonth(dt);
  {結果: 2009-5-1 0:0:0.000 / 2009-5-31 23:59:59.999}

  {周}
  t1 := StartOfAWeek(2009, 21);  t2 := StartOfTheWeek(dt);
  t3 := EndOfAWeek(2009, 21);    t4 := EndOfTheWeek(dt);
  {結果: 2009-5-18 0:0:0.000 / 2009-5-24 23:59:59.999}

  {日}
  t1 := StartOfADay(2009, 140);  t2 := StartOfTheDay(dt);
  t3 := EndOfADay(2009, 140);    t4 := EndOfTheDay(dt);
  {結果: 2009-5-20 0:0:0.000 / 2009-5-20 23:59:59.999}
end;

應用: 報表時間範圍查詢(本月/本周/今日)、定時任務執行窗口判斷、日曆 UI 邊界計算。

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