delphi中的時間操作技術(1) (轉)

gugu99發表於2008-07-27
delphi中的時間操作技術(1) (轉)[@more@]

在編寫應用時,我們需要經常與時間和日期打交道,因此經常需要一些對時間的控制技術,在中,提供了一整套對日期和時間的操作,在此,我將詳細介紹一下在Delphi中的時間操作技術,希望能對大家有所幫助。:namespace prefix = o ns = "urn:schemas--com::office" />

Delphi中的用於表示時間的型別:

首先,看一看在delphi中用於描述時間的幾種資料結構,對時間的操作,其實就是對這些結構的操作。

TDateTime型別

Delphi中最常用的表示日期時間的資料型別TDateTime型別,和普通的整形數一樣,你可以給日期定義一個日期型變數以便在程式中進行操作。TdateTime型別實質上是一個Double型的數,在Delphi中是這樣定義TdateTime型別: type  TDateTime = type Double ,具體的演算法是用Double數的整數部分表示日期,以1989年12月30日為基準點,以天為單位進行加減,如數字1表示1900年1月1日,數字-1表示1989年12月29日。而小數部分則用來表示時間,其值為欲表示的時間與一整天總時間的比值,如早上6點就是6/24=0.25,而早上6:15就是(6*60+15)/(24*60)=0.2604166666666666666666666666667,下面,給出幾個例子說明TDateTime型別與Double型別的互動關係

0  12/30/1899 00:00:00

2.75   1/1/1900 18:00:00

-1.25   12/29/1899 6:00:00

35065   1/1/1996 00:00:00

相信大家一定能自己理解TdateTime與Double之間的轉換方法,因此,從根本上對TDateTime的操作與Double完全一樣。

TTimeStamp 型別:

這是一個用來描述日期與時間的一個結構型別,在Delphi中是這樣定義的:

type

  TTimeStamp = record

  Time: Integer;  {從午夜0點開始到指定時間的毫秒數 }

  Date: Integer;  {以本日為基準到指點日期的天數}

  end;

和TDateTime相比,可更直觀表示高精度的時間,一般用於毫秒級的運算以及用於表示較長的時間。

PsystemTime 型別:

一個用於Win中對時間操作的指標型結構。他的定義為:

type

PSystemTime = ^TSystemTime;

TSystemTime = record

  wYear: ;

  wMonth: Word;

  wDayOfWeek: Word;

  wDay: Word;

  wHour: Word;

  wMinute: Word;

  wSecond: Word;

  wMilliseconds: Word;

end;

這個結構多用於WinApi操作時使用。

在瞭解了各種時間型別的本質後,相信大家都有一套操作這些型別的時間的想法,不過在Delphi中還提供了一整套用於操作時間的過程函式,這些過程和函式都定義在SysUnit這個單元中,現在就向大家介紹Delphi中相關函式:

用於時間操作的函式

Date函式:

定義:Date: TDateTime;

作用:返回當前的日期

範例:CurrentDate := Date;

DayOfWeek函式:

定義:function DayOfWeek(Date: TDateTime): Integer;

作用:得到指定日期的星期值,返回1~7,代表週日到週六。

IncMouth函式:

定義:function IncMonth(const Date: TDateTime; NumberOfMonths: Integer): TDateTime;

作用:求給定的日期Data在NumberOfMonths個月後的日期。

範例:Date1 := IncMonth(date,10);

如果今天是2002-5-3,則Date1就是-3-3

IsLeapYear函式:

定義:function IsLeapYear(Year: Word): Boolean;

作用:判斷指定的年份是否是閏年;

範例:if isLeapYear(2000) then ShowMessage(‘該年是閏年’);

Now函式:

定義:function Now: TDateTime;

作用:用於取得當前的日期時間

範例:CurrentDateTime := Now;

ReplaceDate 過程

定義:procedure ReplaceDate(var DateTime: TDateTime; const NewDate: TDateTime);

作用:使用引數Newdate日期部分替換引數DateTime的日期部分,但不改變時間部分。

ReplaceDate 過程

定義:procedure ReplaceTime(var DateTime: TDateTime; const NewTime: TDateTime);

作用:使用引數Newdate時間部分替換引數DateTime的時間部分,但不改變日期部分。

如果上述這兩個過程一起用,就相當於賦值了。

Time函式:

定義:function Time: TDateTime;

作用:返回當前的時間

範例:CurrentTime := Time;

能提高您操作時間技術方面的能力,同時也為您在閱讀相關的聯機幫助時提供一些方便。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1007905/,如需轉載,請註明出處,否則將追究法律責任。

相關文章