Delphi中對時光操作辦法匯總。本站提示廣大學習愛好者:(Delphi中對時光操作辦法匯總)文章只能為提供參考,不一定能成為您想要的結果。以下是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 類型:
一個用於WinApi中對時光操作的指針型構造。他的界說為:
type PSystemTime = ^TSystemTime; TSystemTime = record wYear: Word; 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就是2003-3-3
IsLeapYear函數:
界說:function IsLeapYear(Year: Word): Boolean;
感化:斷定指定的年份能否是閏年;
典范:
if isLeapYear(2000) then ShowMessage(‘該年是閏年');
Now函數:
界說:function Now: TDateTime;
感化:用於獲得以後的日期時光
典范:
CurrentDateTime := Now;
WordStrDate 進程
界說:procedure WordStrDate(var DateTime: TDateTime; const NewDate: TDateTime);
感化:應用參數Newdate日期部門調換參數DateTime的日期部門,但不轉變時光部門。
WordStrDate 進程
界說:procedure WordStrTime(var DateTime: TDateTime; const NewTime: TDateTime);
感化:應用參數Newdate時光部門調換參數DateTime的時光部門,但不轉變日期部門。
假如上述這兩個進程一路用,就相當於賦值了。
Time函數:
界說:function Time: TDateTime;
感化:前往以後的時光
典范:
CurrentTime := Time;
各類時光類型之間的轉換函數
DateTimeToFileDate函數:
界說:DateTimeToFileDate(DateTime: TDateTime): Integer;
感化:將一個TDateTime類型的時光轉化為Dos情況中的時光,Dos情況下對時光的拜訪辦法和VCL中的TdateTime類型紛歧樣,在停止文件操作時,為了堅持時光的分歧性,須要應用DateTimeToFileDate函數停止轉化, 前往的Integer的值就是Dos下的用於描寫時光的值。
DateTimeToSystemTime 進程:
界說:procedure DateTimeToSystemTime(DateTime: TDateTime; var SystemTime: TSystemTime);
感化:將一個TDateTime類型的時光轉換為Win API函數所應用的TSystemTime類型,在應用WinApi函數把持時光時用到。
SystemTimeToDateTime 函數:
界說:function SystemTimeToDateTime(const SystemTime: TSystemTime): TDateTime;
感化:將一個在WinApi函數中獲得的TSysTemTime類型的數轉換為TDateTime類型。
DateTimeToTimeStamp 函數:
TimeStampToDateTime 函數:
界說:DateTimeToTimeStamp(DateTime: TDateTime): TTimeStamp;
function TimeStampToDateTime(const TimeStamp: TTimeStamp): TDateTime;
感化:用於在TDataTime類型與TTimeStamp之間停止相互轉換。TDataTime 用一個double描寫一個時光,而TTimeStamp則是采取兩個整形數分離描寫時光。兩品種型的差別可參考文章開端處的數據類型描寫部門。
EncodeDate 函數:
界說:function EncodeDate(Year, Month, Day: Word): TDateTime;
感化: 輸出年(year),月(month),日(day)的值,將該日期前往為TDateTime類型,年的規模為1-9999,月份的規模為1-12,日期的規模視當月的情形而定,假如輸出的值超越規模,則將發生一個EConvertError毛病。
DecodeDate 進程:
界說:procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word);
感化:輸出一個TDateTime類型的日期,將其轉為年(Year),月(Month),日(Day)的值。假如輸出值為0或小於0,則年代日均為0,
EncodeTime 函數:
界說:EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;
感化:輸出小時(Hour),分(min),秒(Sec),微秒(MSec)的值,前往一個TDateTime類型的時光,該值為一個介於0至1之間的小數。Hour的取值規模為0-23,Min的取值規模為0-59,Sec的取值規模為0-59,MSec的取值規模為0-999,假如輸出值超越規模,則發生一個EConvertError 毛病。
DecodeTime 進程:
界說:procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word);
感化:輸出一個時光,將其轉換為小時(Hour),分(min),秒(Sec),微秒(MSec)的值。
TDateTime類型與字符串型轉換函數:
DateTimeToStr 函數:
DateToStr 函數
TimeToStr函數
界說:function DateTimeToStr(DateTime: TDateTime): string;
function TimeToStr(Time: TDateTime): string;
function TimeToStr(Time: TDateTime): string;
感化:將一個TDateTime類型的數轉換成字符串,DateTimeToStr轉換日期和時光,DateToStr只轉換日期,TimeToStr只轉換時光。轉換後的輸入後果為YYYY-M-D H:M:S
StrToDateTime函數
StrToDate函數
StrToTime函數
界說:function StrToDateTime(const S: string): TDateTime;
function StrToDate(const S: string): TDateTime;
function StrToTime(const S: string): TDateTime;
感化:將帶有日期時光格局的字符串轉化成TDateTime,個中S必需是一個有用的字符串,如
YY-MM-DD HH:MM:SS格局,不然就會觸發EConvertError事宜,提醒毛病信息。
時光部門的字符串必需是由2~3個的數值字串組成,而且采取在Windows區域設置中設置的分隔字符停止分隔,其格局請求相符在Windows區域設定中的設定,個中HH,MM(小時,分鐘)必需添加,SS(秒)可選,也能夠在前面參加 Am和Pm辨別高低午,這時候候體系將以為采取12小時表現法,不然以為采取24小時表現法。
日期部門的格局請求相符Windows區域設置中的短日期格局,也是由2~3個的數值字串組成,假如在字符串中只要2個數,則以為是指定了月份和日期,年份采取以後年份,
假如在區域設置中采取兩位年份的表現辦法,則體系將會采取以下辦法處置:
以後年份 肇端年份 基准值 輸出年份03 輸出年份50 輸出年份68
1998 0 1900 1903 1950 1968
2002 0 2000 2003 2050 2068
1998 50 1948 2003 1950 1968
2000 50 1950 2003 1950 1968
2002 50 1952 2003 2050 1968
2020 50 1970 2003 2050 2068
2020 10 2010 2103 2050 2068
起首在區域設置中獲得兩位年份的肇端年份,如在區域設置中設兩位年份規模為1932-2031年,則肇端年份為32年,假如這個肇端年份為0,則以為兩位年份表現的都是本世紀,假如其實年份年夜於0 ,則采取以後年份減去肇端年份的值,這個值稱為基准值,年夜於等於這個值則以為事本世紀,不然以為是來世紀,上面給出幾個例子解釋:
DateTimeToString 進程:
FormatDateTime 函數:
界說:procedure DateTimeToString(var Result: string; const Format: string; DateTime: TDateTime);
function FormatDateTime(const Format: string; DateTime: TDateTime): string;
感化:經由過程界說Format字串中的格局獲得要輸入時光字符串,例如要輸入“明天是2002年5月5日,禮拜五”便可以用這兩種辦法,這兩個辦法的感化雷同,只是一個是經由過程同享變量獲得輸入字符串,值在Result中,一個是經由過程前往值獲得輸入字符串,DateTime參數是願望輸入的日期值,Format由格局標記與附加字符串組合而成。附加字串用””圈起,就像C中的Printf函數.如“明天是2002年5月5日,禮拜五”的Format值就是 ‘”明天是”yyyy”年”mm”月”dd”日,” dddd',yyyy,mm,dd,dddd都是格局標識,各類格局標識的說明以下:
d :用一名或兩位整數顯示日子(1-31)
dd :用兩位整數顯示日子,缺乏兩位的用0補足(01-31)
ddd :按縮略方法顯示以後的禮拜號,假如Windows是英文版,則顯示為Mon-Sun,假如是中文版,則顯示同dddd。
dddd :按完全方法顯示以後的禮拜號,如Windows是英文版,則顯示Monday-SumDay,假如是中文版,則顯示禮拜一~禮拜日
ddddd :按區域設置中的短日期格局輸入。
dddddd :按區域設置中的永日期格局輸入。
m :用一名或兩位整數顯示月份(1-12)
mm :用兩位整數顯示月份,缺乏兩位的用0補足(01-12)
mmm :應用縮略方法顯示月份稱號,英文版顯示為Jan-Dec,中文版同mmmm
mmmm :應用完全方法顯示月份稱號,英文版顯示為January-December,中文版為一月~十二月
yy :按兩位整數方法顯示年份(00-99)
yyyy :按四位整數方法顯示年份(0000-9999)
h :用一名或兩位整數顯示小時(0-23)
hh :用兩位整數顯示小時,缺乏兩位的用0補足(00-23)
n :用一名或兩位整數顯示分鐘(0-60)
nn :用兩位整數顯示分鐘,缺乏兩位的用0補足(00-60)
s :用一名或兩位整數顯示秒數(0-60)
ss :用兩位整數顯示秒數,缺乏兩位的用0補足(00-60)
z :用一名至兩位整數顯示毫秒數(0-999)
zzz :用三位整數顯示毫秒數,缺乏三位的用0補足(000-999)
tt :依照區域設置中的格局顯示日期
am/pm :用於12小時制的顯示,帶有AM的則表現從0點~12點,pm代表從12點~0點。
與時光相干的變量:
Delphi封裝了區域設置的各類信息,並以此界說了一系列的變量,上面引見與時光相干的部門變量:
DateSeparator :Char
日期分隔符,用於分隔年代日
TimeSeparator :Char
時光分隔符,用於分隔小時,分鐘,秒
ShortDateFormat:String
區域設置中短日期格局的界說。
LongDateFormat :String
區域設置中永日期格局的界說。
ShortTimeFormat:String
區域設置中短時光格局的界說。
LongTimeFormat :String
區域設置中長時光格局的界說。
TimeAMString :String
用來表現上午的字符串
TimePMString :String
用來表現下晝的字符串
ShortMonthNames:array[1..12] of String;
用於縮略表現月份稱號的數組,就是在應用FormatDateTime時顯示的mmm標識的字符串
LongMonthNames:array[1..12] of String;
用於完全表現月份稱號的數組,就是在應用FormatDateTime時顯示的mmmm標識的字符串
ShortDayNames :array[1..7] of String;
用於縮略表現禮拜稱號的數組,就是在應用FormatDateTime時顯示的ddd標識的字符串
LongDayNames :array[1..7] of String;
用於完全表現禮拜稱號的數組,就是在應用FormatDateTime時顯示的ddd標識的字符串
TwoDigitYearCenturyWindow:Word = 50;
在應用兩位年份時的肇端年份。
好了,至此delphi中關於時光操作的部門根本講完了,讀者在現實編程應用的時刻還可依據本身須要檢查響應的贊助文件處理碰到的成績。