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;

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;

能提高您操作时间技术方面的能力,同时也为您在阅读相关的联机帮助时提供一些方便。

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个数,则认为是指定了月份和日期,年份采用当前年份,

      如果在区域设置中采用两位年份的表示方法,则系统将会采用以下方法处理:

 

      首先在区域设置中取得两位年份的起始年份,如在区域设置中设两位年份范围为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值就是 ‘”今天是yyyymm月”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点。

 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值