分享
 
 
 

delphi中的时间操作技术(2)

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

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

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中关于时间操作的部分基本讲完了,在Delphi6中还提供了一些新的操作函数,不过都比较简单,相信大家看帮助都能看懂,至于对于时间的一些操作技巧,相信看完了本文大家都能有一些,这里就不详细描述,同一种功能本来就应该有多种的实现方法。本文在写作中主要参考了delphi5的联机帮助,本文介绍的大部分函数在联机帮助中都有范例,这里就不一一列举,可参考联机帮助,希望本文能提高您操作时间技术方面的能力,同时也为您在阅读相关的联机帮助时提供一些方便。

目前我正在搞Delphi函数中文化的网站,有兴趣的朋友可以访问Http://www.Togetherdev.com

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有