日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

date time 分开存储如何合并_关于TDateTime的TDate与TTime合并的问题 | 菲菲的家

發布時間:2023/12/20 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 date time 分开存储如何合并_关于TDateTime的TDate与TTime合并的问题 | 菲菲的家 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

遇到TDate與TTime合并為TDateTime的問題,想想應該很容易,沒想到發現一個百思不得其解的問題,在這里跟大家分享并求教。

比如有兩個組件DateTimePicker1和DateTimePicker2,Kind屬性分別為dtkDate和dtkTime,一個用來定義TDate值,一個用來定義TTime值,現在要將TDate與TTime合并為TDateTime,我首先想到的方法是以下語句:

NewDateTime: TDateTime;

...

NewDateTime := Int(DateTimePicker1.Date) + Frac(DateTimePicker2.Time);

應該一句話解決問題的,但偏偏就出了問題,最終對NewDateTime的處理結果不對,可是調試將鼠標停在上述語句的NewDateTime上,明明結果正是DateTimePicker1.Date與DateTimePicker2.Time的字符串之和,很是奇怪。

于是,我有采用了另一種迂回方法達到目的,即以下語句:

NewDateTime: TDateTime;

NewDateTimeStr: string;

...

NewDateTimeStr := DateToStr(DateTimePicker1.Date)+' '+ TimeToStr(DateTimePicker2.Time);

NewDateTime := StrToDateTime(NewDateTimeStr);

這次調試將鼠標停在上述語句的NewDateTime上,結果跟第一次的結果一樣,都是DateTimePicker1.Date與DateTimePicker2.Time的字符串之和,但最終結果表明,這次的NewDateTime正確。

我對上述問題百思不得其解,雖最終用第2種方法達到了目的,但不明所以,在這里本人虛心請教,還望知道怎么回事的朋友告知。本人使用的是XE2?With Update 4 Hotfix 1。

以下代碼證明了上述兩種方法得到的不一樣TDateTime的結果:

放入兩個組件DateTimePicker1和DateTimePicker2,Kind屬性分別為dtkDate和dtkTime;放入一個按鈕,按鈕的OnClick代碼為:

procedure TForm1.Button1Click(Sender: TObject);

var

NewDateTimeStr: string;

NewDateTime1, NewDateTime2: TDateTime;

begin

//這樣就錯誤

NewDateTime1 := Int(DateTimePicker1.Date) + Frac(DateTimePicker2.Time);

//這樣就正確

NewDateTimeStr := DateToStr(DateTimePicker1.Date)+' '+TimeToStr(DateTimePicker2.Time);

NewDateTime2 := StrToDateTime(NewDateTimeStr);

if NewDateTime1 = NewDateTime2 then

ShowMessage('相等')

else

ShowMessage('不相等')

end;

結果當然是不相等。

~謝謝打賞~

總結

以上是生活随笔為你收集整理的date time 分开存储如何合并_关于TDateTime的TDate与TTime合并的问题 | 菲菲的家的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。