|
這幾天因為自己要學習編寫一個小程序中要用到一些時間處理。就在網(wǎng)上搜集一些教材學習到一般的應(yīng)用,做個筆記,加深印象。
用上Delphi中相應(yīng)的函數(shù),Delphi的時間處理起來還是很容易的。
Delphi的時間類型是TDateTime,其實是一個Double.這個double的整數(shù)部分,就是從很久很久以前的某一天算起的天數(shù)。小數(shù)就是時間部分了。因為很遠很遠的一天是從0點開始的。所以小數(shù)部分的0值也是對應(yīng)著一天的開始0點0分0秒。
用函數(shù)DateTimetoStr(0)就可以看到那神秘很遠的一天了。這其中用數(shù)字0做參數(shù),表明TDateTime是double.同理也可以用TimetoStr(0),TimetoStr(0.5),看一看時間的轉(zhuǎn)換。
函數(shù): DateTimetoStr() DatetoStr() TimetoStr()
strtotime('10:00:00) strtodate('2006-2-8') strtodatetime('2006-2-8 10:00:00') 注意其中日期時間顯示的成文本時候的格式。
轉(zhuǎn)換成文本時候,還有另外一個函數(shù): FormatDatetime(Formatestring,TDateTime):String 返回值依然是格式化好的string.倒是Formatstring是一個值得研究。 其有用的格式字符:mmmm表示月份, dd表示日, yyyy表示年, hh:mm:ss 是時間(其后用AM/PM 有無來切換12/24小時制)。當d單獨寫且超過三個ddd,則表示星期。除月日,其它各項間要用','間隔。里面可加用'""'包含的字符,會原樣添加到返回值中。
Delphi help 中的一個例子: S := FormatDateTime('"The meeting is on " ddd, mmmm d, yyyy, " at " hh:mm AM/PM',Now); 則s值為:The meeting is on Wednesday, February 15, 1995 at 2:30 PM
Now(),返回當前系統(tǒng)時間的TDateTime
既然TDateTime是一個double,相互之間是可以直接進行運算的。當然考慮到時間的實際意義,只能進行加和減的運算。比如:Now+1,就表示第二天的這個時候。Now-0.125表示3小時以前。
Now()是用來取系統(tǒng)時間,Win32的時間與delphi的TDateTime的格式還是不同的。 win32時間格式在delphi中定義為:TSystemTime,在delphi中我們可以不用直接處理它。例如now函數(shù)在取時間的時候已經(jīng)幫我們自動轉(zhuǎn)化成TDateTime格式了。
Now()的反向操作,改寫系統(tǒng)時間。 用到一個win32 API函數(shù):SetLocalTime(TSystemTime) 而TDateTime到TSystemTime的轉(zhuǎn)換是用DateTimetoSystemTime(TDateTime,TSystemTime) 要注意的是其參數(shù),而不是用函數(shù)的返回值得到TSystemTime。
|