TDateTimePicker中Date與Time的誤導


 

一、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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM