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