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

Delphi 日期相對運算:Yesterday、Today、Tomorrow 實用技巧

     編輯:Delphi

DateUtils 相對日期常數快速上手

DateUtils 單元提供了三個極其實用的相對日期常數:Yesterday、Today、Tomorrow,它們本質是預計算好的 TDateTime 值,直接拿來用即可,無需呼叫函數,代碼閱讀性極佳。

核心常數說明

常數類型等價表達說明
YesterdayTDateTimeDate - 1昨天 00:00:00
TodayTDateTimeSysUtils.Date今天 00:00:00
TomorrowTDateTimeDate + 1明天 00:00:00

完整程式碼範例

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses DateUtils;

procedure TForm1.FormCreate(Sender: TObject);
var
  t1, t2, t3: TDateTime;
begin
  t1 := Yesterday;
  t2 := Today;      // 等同 SysUtils.Date
  t3 := Tomorrow;

  ShowMessageFmt('%s, %s, %s', [DateToStr(t1), DateToStr(t2), DateToStr(t3)]);
  {輸出範例:2024-01-14, 2024-01-15, 2024-01-16}
end;

end.

進階應用模式

日期範圍快速構建

// 最近 7 天範圍
var
  StartDate, EndDate: TDateTime;
begin
  EndDate := Today;
  StartDate := Today - 6;  // 包含今天共 7 天
end;

// 本週範圍(週一為起始)
var
  WeekStart, WeekEnd: TDateTime;
begin
  WeekStart := Today - (DayOfTheWeek(Today) - 1);
  WeekEnd := WeekStart + 6;
end;

配合 DateUtils 運算函數

uses DateUtils;

// 明天這個時間
var t: TDateTime;
begin
  t := Tomorrow + Frac(Now);  // 保留當前時間部分
end;

// 上週同一天
var t: TDateTime;
begin
  t := Today - WeeksBetween(Today, Today - 7) * 7;  // 簡寫:Today - 7
end;

注意事項

  • 三個常數的時間部分皆為 00:00:00,若需包含時間請自行加上 Frac(Now) 或使用 IncDay 系列函數
  • Today 與 SysUtils.Date 完全等價,可互換使用
  • 跨時區應用請改用 UTC 版本:DateUtils.TodayUTC 等(需較新版本支援)
  • 這些是「常數」而非函數,編譯期即確定值,極高效

擴展:更多相對日期函數

DateUtils 還提供函數版本,支援任意偏移量:

  • IncDay / DecDay:增加/減少天數
  • IncWeek / DecWeek:增加/減少週數
  • IncMonth / DecMonth:增加/減少月數(自動處理月末邊界)
  • IncYear / DecYear:增加/減少年份
  • StartOfTheDay / EndOfTheDay:取得當日 00:00:00 / 23:59:59.999

善用 Yesterday/Today/Tomorrow 這三個常數,能讓日期邏輯代碼更具語義化,減少「魔術數字」帶來的維護負擔。

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