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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

时间与相关类型(2) - TDate、TTime、TTimeStamp

發布時間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 时间与相关类型(2) - TDate、TTime、TTimeStamp 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

//相關函數: SysUtils.DateTimeToTimeStamp(); SysUtils.TimeStampToDateTime();SysUtils.TimeStampToMSecs(); SysUtils.MSecsToTimeStamp();Windows.GetTickCount; Windows.GetCurrentTime; {GetCurrentTime 和 GetTickCount 一樣, 是調用了 GetTickCount.}
TDate、TTime 與 TDateTime 的尺寸是一樣的, 互相轉換也不會損失數據; 存在的意義也只是便于理解.

比較有意思的是 TTimeStamp 結構: TTimeStamp = recordTime: Integer; { "毫秒" 表示的時間, 自: 0:0:0:0 }Date: Integer; { "天" 表示的日期, 自: 1/1/0001 } end;
{TDateTime 與 TTimeStamp 互相轉換的例子} varT: TDateTime;TS: TTimeStamp; beginT := EncodeDateTime(2009, 5, 22, 11, 22, 33, 999);TS := DateTimeToTimeStamp(T);ShowMessage(IntToStr(TS.Time)); //40953999; 當日已逝去了 40953999 毫秒ShowMessage(IntToStr(TS.Date)); //733549; 自 0001-1-1 的第 733549 天T := TimeStampToDateTime(TS);ShowMessage(FormatDateTime('yyyy-m-d h:m:s:z', T)); //2009-5-22 11:22:33:999 end;
假如我們要想知道自 0001-1 0:0:0:0 到 2009-5-22 11:22:33:999 總的毫秒數, 根據上面的結果不難算出:
733549*24*60*60*1000 + 40953999 = 63378674553999.

不過這有現成的函數: TimeStampToMSecs、MSecsToTimeStamp.

{TimeStampToMSecs、MSecsToTimeStamp 示例:} varT: TDateTime;TS: TTimeStamp;ms: Comp; {這是 TimeStampToMSecs 返回的類型} beginT := EncodeDateTime(2009, 5, 22, 11, 22, 33, 999);TS := DateTimeToTimeStamp(T);ms := TimeStampToMSecs(TS);ShowMessage(FloatToStr(ms)); //63378674553999TS := MSecsToTimeStamp(ms);T := TimeStampToDateTime(TS);ShowMessage(FormatDateTime('yyyy-m-d h:m:s:z', T)); //2009-5-22 11:22:33:999 end;
另外: GetTickCount 函數可獲取從開機時間到當前時間的毫秒數, 結合上面, 可以算出開機時間:

{獲取開機時間的例子} varT1: Int64;T2,T3: Comp;T4: TDateTime; beginT1 := GetTickCount; {從開機到現在的毫秒數}T2 := TimeStampToMSecs(DateTimeToTimeStamp(Now)); {從 0001-1-1 到當前時間的毫秒數}T3 := T2 - T1; {從 0001-1-1 到開機時刻的毫秒數}T4 := TimeStampToDateTime(MSecsToTimeStamp(T3)); {從 0001-1-1 到開機時刻的時間}ShowMessage(DateTimeToStr(T4)); {顯示開機時間} end;

轉載于:https://my.oschina.net/hermer/blog/320108

總結

以上是生活随笔為你收集整理的时间与相关类型(2) - TDate、TTime、TTimeStamp的全部內容,希望文章能夠幫你解決所遇到的問題。

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