Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何测试日期是否在日期范围内(两个字符串)?_Delphi_Date Range - Fatal编程技术网

Delphi 如何测试日期是否在日期范围内(两个字符串)?

Delphi 如何测试日期是否在日期范围内(两个字符串)?,delphi,date-range,Delphi,Date Range,我有两个字符串,例如05.04.2002和23.01-2002-23.06.2002 如何确定第一个字符串中的日期是否介于第二个字符串中的日期之间 我一直在想什么 dateString := '05.04.2002'; dateRangeString := '23.01-2002 - 23.06.2002'; date := StrToDate( dateString ); rangeStart := StrToDate( LeftStr(dateRangeString, 10) ); ran

我有两个字符串,例如
05.04.2002
23.01-2002-23.06.2002

如何确定第一个字符串中的日期是否介于第二个字符串中的日期之间

我一直在想什么

dateString := '05.04.2002';
dateRangeString := '23.01-2002 - 23.06.2002';

date := StrToDate( dateString );
rangeStart := StrToDate( LeftStr(dateRangeString, 10) );
rangeEnd := StrToDate( RightStr(dateRangeString, 10) );

现在我不知道该怎么办了

A
TDateTime
变量本质上是一个
double
变量,两个日期时间值(被视为日期时间值)之间的顺序与被视为实数的值之间的顺序相同

procedure TForm4.FormCreate(Sender: TObject);
var
  d1, d2, d: TDate;
begin
  d1 := StrToDate('2012-07-25');
  d2 := StrToDate('2012-07-29');

  d := StrToDate('2012-07-26');

  if (d1 <= d) and (d <= d2) then
    ShowMessage('In range!');
end;

您可以使用unit
System.DateUtils
及其功能:


您还可以检查此函数的第四个参数(
AInclusive:Boolean=True
)。。。根据您的需要…

我唯一想补充的是,如果日期的格式为YYYY-MM-DD,那么您可以简单地比较它们,以确定其中一个是否在某个范围内。不需要先将它们转换为TDateTime

R1 := '2012-01-01';
R2 := '2012-01-31';
D := '2012-01-15';

if (D >= R1) and (D <= R2) then
  // within range
R1:=“2012-01-01”;
R2:=“2012-01-31”;
D:=“2012-01-15”;

如果(D>=R1)和(D)由于某种原因,我的IDE当前拒绝显示
TDateTime
的声明(Ctrl单击无效),但我想它实际上被声明为
TDateTime=type double
,这样就可以使用自定义属性编辑器。非常好的答案,你们两个。非常感谢你们的快速回答!非常好的答案,你们两个。非常感谢你们的快速回答!嗯……我找不到任何
DateInRange
函数它是在Delphi 2009之后引入的吗?@AndreasRejbrand:它已经添加了XE版本:;
var
  dStart, dEnd, d2Test: TDate;
begin
  dStart := StrToDate('25/07/2012');
  dEnd   := StrToDate('29/07/2012');

  d2Test := StrToDate('26/07/2012');

  if DateInRange(d2Test, dStart, dEnd) then
    ShowMessage('In range!');
R1 := '2012-01-01';
R2 := '2012-01-31';
D := '2012-01-15';

if (D >= R1) and (D <= R2) then
  // within range