在日期范围内获取所有日期

发布于 2025-01-28 21:46:55 字数 84 浏览 5 评论 0原文

如果我有一个给定的日期范围(datefromdateTo),如何将所有日期在日期范围内获取?

If I have a given date range (DateFrom and DateTo), how can I get all the dates within the date range?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

月棠 2025-02-04 21:46:55

按照如何将天和小时添加到日期时间变量?您只使用 dateutils.incsday() 。示例:

“

type
  TForm1 = class(TForm)
    lblFrom: TLabel;
    dtpFrom: TDateTimePicker;
    lblTo: TLabel;
    dtpTo: TDateTimePicker;
    cbnAll: TButton;
    lbxAll: TListBox;
    procedure cbnAllClick(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  DateUtils;

procedure TForm1.cbnAllClick(Sender: TObject);
var
  vFrom, vDay, vTo: TDate;
begin
  // From the DateTimePicker controls
  vFrom:= dtpFrom.Date;
  vTo:= dtpTo.Date;

  // Starting with "From", ending at "To"
  vDay:= vFrom;
  repeat
    // Add current iteration as text to listbox
    lbxAll.Items.Add( DateToStr( vDay ) );

    // Increase date's day by 1, automatically switching month and year, if needed
    vDay:= DateUtils.IncDay( vDay, 1 );
  until vDay> vTo;
end;

As per How to add days and hours to a date-time variable? you just use DateUtils.IncDay(). Example:

DateTimePickers and Listbox to iterate all dates per day

type
  TForm1 = class(TForm)
    lblFrom: TLabel;
    dtpFrom: TDateTimePicker;
    lblTo: TLabel;
    dtpTo: TDateTimePicker;
    cbnAll: TButton;
    lbxAll: TListBox;
    procedure cbnAllClick(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  DateUtils;

procedure TForm1.cbnAllClick(Sender: TObject);
var
  vFrom, vDay, vTo: TDate;
begin
  // From the DateTimePicker controls
  vFrom:= dtpFrom.Date;
  vTo:= dtpTo.Date;

  // Starting with "From", ending at "To"
  vDay:= vFrom;
  repeat
    // Add current iteration as text to listbox
    lbxAll.Items.Add( DateToStr( vDay ) );

    // Increase date's day by 1, automatically switching month and year, if needed
    vDay:= DateUtils.IncDay( vDay, 1 );
  until vDay> vTo;
end;
闻呓 2025-02-04 21:46:55

tdatetdateTime值的整数部分是一天的数字(自
1899-12-30)。使用此信息在日期范围内的所有日期迭代都可以如下所示:

program IterateDateRangeProj;

{$APPTYPE CONSOLE}

uses
  System.SysUtils,DateUtils;

procedure IterateDateRange( DateFrom,DateTo : TDate);
var
  iDate : TDate;
begin
  for var i := Trunc(DateFrom) to Trunc(DateTo) do begin
    iDate := i;
    WriteLn(DateToStr(iDate));
  end;
end;

begin
  IterateDateRange(ToDay,Tomorrow);
  ReadLn;
end.

The integer part of a TDate or TDateTime value is the day number ( the number of days that have passed since
1899-12-30). Using this information an iteration for all dates within a date range can look like this:

program IterateDateRangeProj;

{$APPTYPE CONSOLE}

uses
  System.SysUtils,DateUtils;

procedure IterateDateRange( DateFrom,DateTo : TDate);
var
  iDate : TDate;
begin
  for var i := Trunc(DateFrom) to Trunc(DateTo) do begin
    iDate := i;
    WriteLn(DateToStr(iDate));
  end;
end;

begin
  IterateDateRange(ToDay,Tomorrow);
  ReadLn;
end.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文