delphi日期时间比较大小

来源:百度知道 编辑:UC知道 时间:2024/06/08 10:58:51
datestart:=DateTostr(DateTimePicker1.Date)
怎么取得当前选定的值啊
我是在form初始化时给他服了一个now当前时间
var
i:integer;
cost,income:double;
datestart,dateend:string;
yjks,yjjs:TdateTime;
begin
datestart:=DateTostr(DateTimePicker1.Date)+' '+Edit1.Text; //预计开始时间,Edit1.Text取得当前设定的时间
dateend:=DateTostr(DateTimePicker1.Date)+' '+Edit2.Text; //预计结束时间
yjks:=StrToDateTime(datestart); //转换成日期时间
yjjs:=StrToDateTime(dateend);
if yjks <=yjjs then
begin
//执行代码
end;
我怎么取不到用DateTimePicker1取得当前的日期呢

我再补充一下:
我的上面的Edit1.Text能取到时间如:12:30:20
但是日期采用DateTimePicker1.Date来点击选择日期如:2008-10-01
DateTimePicker1在窗口的formshow事件里已经对其初始化为当前日期
然后Edit1.Text在formshow里面初始化为当前时间
代码:
DateTimePicker1.Datetime:=now;
DateTimePicker2.Datetime:=now;
Edit1.Text:=timetostr(time);
Edit2.Text:=timetostr(time);


datestart:=DateTostr

1、datestart,dateend你可以设为Tdatetime,这样减少转换。
2、日期型数据是double,本身在比较大小时就会有问题,特别是日期与字串相互转换后可能会变动。
3、把日期赋给了两个变量又进行比较,其实没有意义。可以改为只比较时间,把时间如果转换成数值型(秒为单位)进行比较更准确。
4、formshow中初始化并不明智。因为这个事件并不是只启动一次,而只要是重新显示窗口都会触发这一事件。一般初始化在create中进行。

你这样写已经取到DateTimePicker1选定的值了,只是作比较的时候建议你日期和日期比较,时间和时间比较,不要两个放在一起比较!