if ((sender as tdatetimepicker).name='dps') then begin if dps.Date>dpz.date then dps.Date:=dpz.date; end;if ((sender as tdatetimepicker).name='dpz') then begin if dpz.Date<dps.Date then dpz.Date:=dps.date; end; if dps.Date=dpz.Date then beginif (((sender as Tdatetimepicker).name='tpz') or(((sender as tdatetimepicker).name='dpz')) ) and (tpz.Time<tps.Time) then begin tpz.time:=tps.time; end;if (((sender as Tdatetimepicker).name='tps') or ( ((sender as tdatetimepicker).name='dps'))) and (tps.time>tpz.Time) then tps.Time:=tpz.time;
要么DTKDATA,要么 DTKTIME
begin
if dps.Date>dpz.date then
dps.Date:=dpz.date;
end;if ((sender as tdatetimepicker).name='dpz') then
begin
if dpz.Date<dps.Date then
dpz.Date:=dps.date;
end;
if dps.Date=dpz.Date then
beginif (((sender as Tdatetimepicker).name='tpz') or(((sender as tdatetimepicker).name='dpz')) ) and (tpz.Time<tps.Time) then
begin
tpz.time:=tps.time;
end;if (((sender as Tdatetimepicker).name='tps') or ( ((sender as tdatetimepicker).name='dps'))) and (tps.time>tpz.Time) then
tps.Time:=tpz.time;
dps,dpz日期
tps,tpz时间
起始时间用两个:一个控制日期、一给控制时间
看看下面的时间显示正确吗?:
showmessage(formatdatetime('yyyy-mm-dd HH:mm:ss',trunc(DateTimePicker1.Date) + DateTimePicker2.time-trunc(DateTimePicker2.Date)));
begin
dtptime.DateTime:=now;
dtpdate.DateTime:=now;
end;procedure TFtime.dtpdateChange(Sender: TObject);
var
systime:systemtime;
localtime:tdatetime;
begin
dtptime.datetime:=dtpdate.datetime;
localtime:=ftime.dtpdate.datetime-strtotime('08:00:00');
datetimetosystemtime(localtime,systime);
setsystemtime(systime);end;procedure TFtime.dtptimeChange(Sender: TObject);
var
systime:systemtime;
localtime:tdatetime;
begin
dtpdate.datetime:=dtptime.datetime;
localtime:=ftime.dtptime.datetime-strtotime('08:00:00');
datetimetosystemtime(localtime,systime);
setsystemtime(systime);
end;
测试通过的。
你可以这样做!如果说你想查询2002-07-01 0:00:00到2002-07-30 11:59:59的记录的话,你可以这样!只用两个DatetimePicker,用于选择日期!而在程序中把0:00:00,11:59:59加进去!