Delphi中对时间操作方法汇总

论坛 期权论坛 脚本     
niminba   2021-5-23 04:26   1082   0

一般来说在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; 

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; 

各种时间类型之间的转换函数

DateTimeToFileDate函数:
定义:DateTimeToFileDate(DateTime: TDateTime): Integer;
作用:将一个TDateTime类型的时间转化为Dos环境中的时间,Dos环境下对时间的访问方法和VCL中的TdateTime类型不一样,在进行文件操作时,为了保持时间的一致性,需要使用DateTimeToFileDate函数进行转化, 返回的Integer的值就是Dos下的用于描述时间的值。

DateTimeToSystemTime 过程:
定义:procedure DateTimeToSystemTime(DateTime: TDateTime; var SystemTime: TSystemTime);wuwr#uw^t7j+ 4)[Vb^C4)Vb^C7R4)'Z?b7jbr> zq]b.ǚZ&#gb zsbZ&#gbB14)'3VZ?b7jbr> ]b.ǚZ&#gb5M zsbZ&#gbbrr^4)'2j~^r4)'2jV4)[Vbr#4)Vbr#7R4)VZ?br#B7ǚZ&#bZ&#B14)3VZ?br#B7ǚZ&#bZ&#r#r 4)'VZ?b4)'noVZ?b4)[Vb^4)Vb^7R4)[Vb"J4)Vb"J7R4)[VbKV4)VbKV7R4)胾VbKV$4)VbKV7R$4)'2jb^r|4)^"jbr%7j"g8 x 1 4(^^nj>c?4(2jB7k"_j>c?/v^^nj">c?4(4)M4+^r"jS"jSr#^4(4)QM4+^^"jS"jS^JH4(4)M4+2~^rjk4(4)14+2Vjk4(4)MQ4+2~^^jk4(4)1Q4+2Vjk4(4)Q5M4+Rv+6#j_4(4)QA5M4+Rv/6#j_4(4)M59tM4+R#B7jVǚbrQ^bjj_4(4)159tM4+R3V#B7jVǚbrQ^bjj_4(4)MM4+RrB7jVǚbrQ^bjj_4(4)1M4+R3VrB7jVǚbrQ^bjj_4(4)Q]4+r^j/4(^^N7"~3r{f/j^gr~r/nSj*Z"j^c4(

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP