一、DateTime,Date,Time存儲方式本質上也是以double來存儲的。用整數部分表示日期,小數部分表示時間。可看我另外一篇“access 中“日期/時間”存儲方式 ”
TDateTimePicker有上面三種屬性。
二、TDateTimePicker的kind屬性設置為dtkDate用於顯示日期,第二個kind設置為dtkTime用於顯示時間,但是不能同時顯示的。
三、用DateTimePicker.Date和Time的值要注意:取Date要用trunc取整得到,取Time要用frac取小數得到。
四、DateTimePicker的Date,Time,DateTime三者是相等的。
下面這個例子看一下:
新建一個工程放入一個TDateTimePicker、兩個TEdit、兩個按鈕,並設置兩個按鈕的事件代碼如下
{DateTimePicker1的日期和時間設置為:2010-03-26 13:00:00}
procedure TForm1.Button1Click(Sender: TObject); //取出Date部分,並判斷它的值
var
t:TDateTime;
begin
t:= DateTimePicker1.Date;
Edit1.Text:=DateTimeToStr(t);
end;
procedure TForm1.Button2Click(Sender: TObject); //判斷取Date和DateTime是否相等
begin
if DateTimePicker1.Time = DateTimePicker1.DateTime then
begin
Edit2.Text:='相等'
end
else
begin
Edit2.Text:='不相等';
end;
end;
可以看到雖然我們的代碼中只取了Date或是Time,但是它們的值和DateTime的值是相等的。
所以如果你用如下代碼
{DateTimePicker1的日期和時間設置為:2010-03-26 13:00:00}
procedure TForm1.Button1Click(Sender: TObject); //取出Date部分,並判斷它的值
var
t:TDateTime;
begin
t:= DateTimePicker1.Date + DateTimePicker1.Time;
//t:= trunc(DateTimePicker1.Date)+frac(DateTimePicker1.Time);//這才是等到DateTimePicker1的日期和時間
Edit1.Text:=DateTimeToStr(t);
end;
結果是:2120-6-21 2:00:00
相當於是把DateTimePicker1的時間和日期乘以2了,並不是說DateTimerPicker的Date+Time就和DateTime相等。
而用 trunc取整數部分 加上 frac取小數部分 函數,兩者取出來的和就會和原來相等。
參考:
http://ifso.iteye.com/blog/1752420