我在表格上使用了两个月的日历。我为每一天选择一个日期,并计算这两天之间的天数。我唯一有的代码是
procedure TForm1.Button1Click(Sender: TObject);
Var
N, m: TDate;
d: Real;
l,k:String;
begin
N := (MonthCalendar1.Date);
m := MonthCalendar2.Date;
L := formatdatetime('dd', N);
K:=formatdatetime('dd',M);
d := StrToFloat(L)-StrToFloat(K);
ShowMessage(FloatToStr(d));
end; 发布于 2020-04-01 02:55:46
您不需要MonthCalendar就可以做到这一点。TDateTime到小数点的RHS的部分实际上是一个“天数”,所以如果将其中一个与另一个相减,就会得到“天数之间”。对两者应用Trunc以丢弃时间部分。有关TDateTime的定义,请参阅http://docwiki.embarcadero.com/Libraries/Rio/en/System.TDateTime。
因此,例如,给定
var
D1,
D2 : TDateTime;
DaysBetween : Integer;D1和D2是两个TDateTimes (如果您愿意,可以使用TMonthCalendar输入),然后
DaysBetween := Trunc(D2) - Trunc(D1);对内置Trunc函数的调用将丢弃TDateTime值的小数时间部分(即小数点右侧的部分),以便将某一天的23:59和下一天的00:01计算为相隔一天。这可能是您想要的结果,也可能不是,这取决于您的应用程序,这就是为什么我建议您自己计算它,而不是使用内置的DaysBetween函数。
https://stackoverflow.com/questions/60957445
复制相似问题