TDateTimePicker中Date與Time的誤導

 

1、DateTime,Date,Time存儲方式本質上也是以double來存儲的。用整數部分表示日期,小數部分表示時間。可看我另一篇「access 中「日期/時間」存儲方式 」html

TDateTimePicker有上面三種屬性。函數

2、TDateTimePicker的kind屬性設置爲dtkDate用於顯示日期,第二個kind設置爲dtkTime用於顯示時間,可是不能同時顯示的。ui

3、用DateTimePicker.Date和Time的值要注意:取Date要用trunc取整獲得,取Time要用frac取小數獲得。.net

4、DateTimePicker的Date,Time,DateTime三者是相等的。unix

下面這個例子看一下:orm

新建一個工程放入一個TDateTimePicker、兩個TEdit、兩個按鈕,並設置兩個按鈕的事件代碼以下htm

{DateTimePicker1的日期和時間設置爲:2010-03-26 13:00:00}
procedure TForm1.Button1Click(Sender: TObject);  //取出Date部分,並判斷它的值
var
  t:TDateTime;blog

begin
  t:= DateTimePicker1.Date;事件

  Edit1.Text:=DateTimeToStr(t);
end;get


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

相關文章
相關標籤/搜索