各种时间类型之间的转换函数
DateTimeToFileDate函数:
定义:DateTimeToFileDate(DateTime: TDateTime): Integer;
作用: 将一个TDateTime类型的时间转化为Dos环境中的时间,Dos环境下对时间的访问
方法和VCL中的TdateTime类型不一样,在进行文件操作时,为了保持时间的一致性,需
要使用DateTimeToFileDate函数进行转化,返回的Integer的值就是Dos下的用于描述时
间的值。
DateTimeToSystemTime 过程:
定义:procedure DateTimeToSystemTime(DateTime: TDateTime; var SystemTime: TS
ystemTime);
作用:将一个TDateTime类型的时间转换为Win API函数所使用的TSystemTime类型,在使
用WinApi函数操纵时间时用到。
SystemTimeToDateTime 函数:
定义:function SystemTimeToDateTime(const SystemTime: TSystemTime): TDateTim
e;
作用:将一个在WinApi函数中得到的TSysTemTime类型的数转换为TDateTime类型。
DateTimeToTimeStamp 函数:
TimeStampToDateTime 函数:
定义:DateTimeToTimeStamp(DateTime: TDateTime): TTimeStamp;
function TimeStampToDateTime(const TimeStamp: TTimeStamp): TDateTime;
作用:用于在TDataTime类型与TTimeStamp之间进行互相转换。TDataTime 用一个doubl
e描绘一个时间,而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,如果输入值超出范围,则产生一个EC
onvertError 错误。
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转换日期和时间,Date
ToStr只转换日期,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; D
ateTime: TDateTime);
function FormatDateTime(const Format: string; DateTime: TDateTime): s
tring;
作用:通过定义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;
在使用两位年份时的起始年份。 Day开头的函数
●
Unit
DateUtils
functionDateOf(constAValue:TDateTime):TDateTime;
描述
使用DateOf函数用来把一个TDateTime类型的变量转变成一个
只带有日期的TDateTime类型变量。
例如:
showmessage(DateTimetostr(dateof(now())));
你得到的是2003/03/19
而showmessage(DateTimetostr((now())));
得到的是2003/03/1910:50:49
●functionDateTimeToStr(DateTime:TDateTime):string;
描述
DateTimeToString函数将TDateTime类型的参数DateTime转换成一个
字符串,使用给定的全局变量ShortDateFormat的格式,时间部分按照
给定的全局变量LongTimeFormat的格式。
其中DateTime为零的部分将不会显示出来。
例如:
ShortDateFormat:='yyyymmdd';
showmessage(DateTimetostr((now())));
你将得到:2003031910:50:49
●procedureDateTimeToString(varResult:string;constFormat:string;DateTime:TDateTime);
描述:
DateTimeToString方法将TDateTime类型的参数DateTime按照由参数Format提供的格式
转化成字符串,并保存在Result中。
对于Format的格式类型,请看Date-Timeformatstrings的帮助。
例如:
DateTimeToString(result,'yyyymmdd',now());
那么result的结果为:2003031910:50:49
●procedureDateTimeToSystemTime(DateTime:TDateTime;varSystemTime:TSystemTime);
描述:
有时为了调用API函数来使用系统时间,你可以使用DateTimeToSystemTime方法,来将一个
TDateTime类型的时间变量转换成一个TSystemTime类型的系统时间。
●functionDateTimeToUnix(constAValue:TDateTime):Int64;
描述:
使用DateTimeToUnix函数来将一个TDateTime型时间变量转换成一个相应的Unix格式
的日期和时间。
Unixdate-and-timevaluesareencodedasthenumberofsecondsthathaveelapsed
sincemidnightatthestartofJanuary1,1970.
●functionDateToStr(Date:TDateTime):string;
描述:
使用DateToStr函数能得到TDateTime日期时间类型的日期部分。日期的转换格式依赖于
全局变量ShortDateFormat。
●functionDayOf(constAValue:TDateTime):Word;
描述:
对于给定的TDateTime类型的日期时间,使用DayOf函数能得到该日期是该月份的第几天。
该函数的返回数值在1到31之间
注意:DayOf函数得到的结果与DayOfTheMonth相同。
例如:
showmessage(inttostr(dayof(now)));
得到的是:19(今天是某月19日)
●functionDayOfTheMonth(constAValue:TDateTime):Word;
与DayOf相同。
●functionDayOfTheWeek(constAValue:TDateTime):Word;
描述:
对于给定的TDateTime类型的日期时间,使用DayOfTheWeek函数能得到该日期是该星期的
第几天。DayOfTheWeek函数的返回数值为1到7,其中1表示星期一,而7表示星期日。
注意:DayOfTheWeek是ISO8601标准的(此标准为星期一是一周的第一天)。对于一周
的第一天是星期日的标准,如果想获得星期数,请使用DayOfWeek函数。
Tip:Tomakethereturnvaluemorereadable,usetheDayofweekconstants.
●functionDayOfTheYear(constAValue:TDateTime):Word;
描述:
根据给定的日期时间参数AValue,使用DayOfTheYear函数能得到在该日期所在的年份中,该
日期按照顺序所计算的天数。因此,作为TDateTime类型的变量“1月1日”在该函数所得到的
结果为1,“1月2日”所得到的结果为2,“2月1日”所得到的结果就为32,依次类推。
●functionDayOfWeek(Date:TDateTime):Integer;
Description
DayOfWeekreturnsthedayoftheweekofthespecifieddateasanintegerbetween
1and7,whereSundayisthefirstdayoftheweekandSaturdayistheseventh.
Note:DayOfWeekisnotcompliantwiththeISO8601standard,whichdefinesMonday
asthefirstdayoftheweek.ForanISO8601compliantversion,usetheDayOfTheWeek
functioninstead.
描述:
按照给定的TDateTime类型的参数Date,DayOfWeek函数得到一周中的第几天,从1到7。
这里星期日是一周的第一天,而星期六是第七天。
●functionDaysBetween(constANow,AThen:TDateTime):Integer;
描述:
根据两个TDateTime类型的日期时间变量ANow和AThen,DaysBetween函数能得到两者之间的
天数的差距。
DaysBetween仅仅根据天数的不同来计算。因此,对于1999年12月31日下午11点59分到
2000年1月1日11点58分,该函数得到的结果是0,因为两者之间的时间差别还差1分钟才到
1天。
●functionDaysInAMonth(constAYear,AMonth:Word):Word;
描述:
对于各定的年份和月份,DaysInAMonth函数能得到该月份的总天数。
年份应该为从1到9999
月份应该为从1到12
●functionDaysInAYear(constAYear:Word):Word;
描述:
对于给定的年份,DaysInAYear函数能得到该年份的总天数。
年份应该为1到9999。
●functionDaysInMonth(constAValue:TDateTime):Word;
描述:
根据给定的TDateTime类型的时间日期参数AValue,DaysInMonth函数能得到该月份的总天数。
●functionDaysInYear(constAValue:TDateTime):Word;
描述:
根据给定的TDateTime类型的时间日期参数AValue,DaysInYear函数能得到该年份的总天数。
●functionDaySpan(constANow,AThen:TDateTime):Double;
描述:
根据两个TDateTime类型的日期时间参数ANow和AThen,DaySpan能得到在天数上的差距。
与DaysBetween函数不同,DaysBetween函数只是计算整的天数,而DaySpan函数会
将不足一天的数也得到。
注意:此函数返回的数值为Double型。
☆Month开头的函数
●functionMonthOf(constAValue:TDateTime):Word;
描述:
根据给定的TDateTime类型的时间日期参数AValue,MonthOf函数能得到该年份的该月份数。
MonthOf返回数值为1到12。
注意:MonthOf函数得到的数值与MonthOfTheYear函数相同
●functionMonthOfTheYear(constAValue:TDateTime):Word;
与MonthOf函数相同。
●functionMonthsBetween(constANow,AThen:TDateTime):Integer;
描述:
根据两个给定的TDateTime类型的参数ANow和AThen,MonthsBetween函数能得到两个日期在月份
上差距数。因为月份的天数是不同的,所以MonthsBetween函数返回的是一个近似值,该近似
值基于每个月份为30.4375天。不足一个月的数字将不被计算。
因此,例如,对于2月1日到2月28日,MonthsBetween返回的数值为0。
同样,对于2月1日到3月1日,MonthsBetween返回的数值也是0。
●functionMonthSpan(constANow,AThen:TDateTime):Double;
描述:
根据两个给定的TDateTime类型的参数ANow和AThen,MonthsBetween函数能得到两个日期在月份
上差距数。因为月份的天数是不同的,所以MonthsBetween函数返回的是一个近似值,该近似
值基于每个月份为30.4375天。与MonthsBetween函数不同,MonthsBetween函数不计算不足
一个月的数字,MonthSpan函数将会得到不足一个月的数字。
注意:此函数返回的类型为Double
●functionMonthStr(DateTime:TDateTime):string;
Description
HTTPmessageheaderspermitseveralformatsfortherepresentationofdateandtime
values.MonthStrconvertsaTDateTimevalueintoastringrepresentingthemonth.
MonthStrallowsserverapplicationstoworkwithdatevaluestakenfromHTTPrequest
messages,withoutworryingaboutthedetailsofhowtheyareformatted.
☆Week开头的函数
●functionWeekOf(constAValue:TDateTime):Word;
描述:
根据TDateTime类型的日期时间参数AValu,WeekOf函数会得到该星期为一年的第几个
星期。
●functionWeeksInAYear(constAYear:Word):Word;
描述:
WeeksInAYear函数根据年份得到在该年份中共包含多少个星期。
●functionWeeksBetween(constANow,AThen:TDateTime):Integer;
描述:
根据两个TDateTime类型的日期时间参数ANow和AThen,WeeksBetween函数将得到这两个时间在
星期上的差数。如果差数不足一个星期,则忽略掉。
●functionWeekSpan(constANow,AThen:TDateTime):Double;
描述:
根据两个TDateTime类型的日期时间参数ANow和AThen,WeeksBetween函数将得到这两个时间在
星期上的差数。如果差数不足一个星期,则WeekSpan函数不会忽略掉。
注意:此函数的返回类型为Double
☆Year开头的函数
●functionYearOf(constAValue:TDateTime):Word;
描述:
根据给定的TDateTime类型的日期时间参数AValue,YearOf函数能得到该日期的年份数字。
YearOf函数返回的数值为从1到9999
●functionYearsBetween(constANow,AThen:TDateTime):Integer;
描述:
根据两个给定的TDateTime类型的参数ANow和AThen,YearsBetween函数能得到两个日期在年份
上差距数。因为年份的天数是不同的,所以YearsBetween函数返回的是一个近似值,该近似
值基于每年的天数为365.25天。不足的一年的差距将不会被计算。
因此例如:对于1月1日和12月31日,如果这两个日期在同一年,则YearsBetween返回数值
为0;如果这两个日期在临近的年份,则YearsBetween函数返回数值为1。
●functionYearSpan(constANow,AThen:TDateTime):Double;
描述:
根据两个给定的TDateTime类型的参数ANow和AThen,YearsBetween函数能得到两个日期在年份
上差距数。因为年份的天数是不同的,所以YearsBetween函数返回的是一个近似值,该近似
值基于每年的天数为365.25天。与YearsBetween函数不同,YearsBetween函数将忽略掉不
足一年的数字,而YearSpan将计算不足一年的数字。
注意:该函数返回类型为Double
●functionYesterday:TDateTime;
描述:
Yesterday函数能得到当前日期的前一天的日期,返回数值中不包括时间部分。
例如:
当前日期是2003/3/19
则showmessage(datetimetostr(Yesterday));
将得到2003/3/18
☆日期的合成
●functionEncodeDate(Year,Month,Day:Word):TDateTime;
描述:
EncodeDate函数将根据参数年份、月份、日子而得到一个TDateTime类型的时间变量。
●functionEncodeDateDay(constAYear,ADayOfYear:Word):TDateTime;
描述:
EncodeDateDay将根据参数年份和天数,而得到一个TDateTime类型的时间变量。
其中AYear为1到9999。
ADayOfYear为日子在该年份顺序排列的天数,例如,1月1日时,ADayOfYear为1,
2月2日时,ADayOfYear为2,3月1日时,ADayOfYear为32。
●functionEncodeDateMonthWeek(constAYear,AMonth,AWeekOfMonth:Word;constADayOfWeek:Word=
1):TDateTime;
描述:
EncodeDateMonthWeek函数将根据参数年份、月份、星期数,星期几,来得到一个TDateTime类型
的时间变量。
其中AYear为1到9999。
其中AMonth为1到12。
AWeekOfMonth是在该月份的星期数,1表示第一个星期,可能包含4天或更多的天数。
注意,一个月的第一天如果是星期5,星期6或星期日,用表示这三天的AMonth数值必须设定
为上一个月份的数字,同时AWeekOfMonth要设为在上一个月所在的星期数。
同样,如果一个月的最后一天是星期1,星期2,或星期3,那么用表示这三天的AMonth数值
必须设定为下一个月份的数字,同时AWeekOfMonth为1。
ADayOfWeek表示星期几,星期一为1,星期二为2。
●functionEncodeDateTime(constAYear,AMonth,ADay,AHour,AMinute,ASecond,AMilliSecond:
Word):TDateTime;
描述:
EncodeDateTime根据参数年份、月份、日子、小时、分、秒、毫秒来得到一个TDateTime类型
日期时间。
●functionEncodeDateWeek(constAYear,AWeekOfYear:Word;constADayOfWeek:Word=1):TDateTime;
描述:
EncodeDateWeek根据参数年份、星期数、星期几来得到一个TDateTime类型日期时间。
AWeekOfYear是在该年份的星期数,1表示第一个星期,可能包含4天或更多的天数。
注意,一年的第一天如果是星期5,星期6或星期日,用表示这三天的AYear数值必须设定
为上一个年份的数字,同时AWeekOfYear要设为在上一个年所在的星期数。
同样,如果一年的最后一天是星期1,星期2,或星期3,那么用表示这三天的AYear数值
必须设定为下一个年份的数字,同时AWeekOfYear为1。
ADayOfWeek表示星期几,星期一为1,星期二为2。
●functionEncodeTime(Hour,Min,Sec,MSec:Word):TDateTime;
描述:
EncodeTime函数根据参数小时、分、秒、毫秒得到个一个TDateTime数值。
☆日期的分解
●procedureDecodeDate(Date:TDateTime;varYear,Month,Day:Word);
描述:
DecodeDate从一个TDateTime类型参数Date中分解出得到年份、月份、日子。
●procedureDecodeDateDay(constAValue:TDateTime;outAYear,ADayOfYear:Word);
描述:
DecodeDateDay方法会根据TDateTime类型参数AValue得到相应的年份和日期总数。
ADayOfYear:1月1日,此数值为1;1月2日,此数值为2。
●procedureDecodeDateMonthWeek(constAValue:TDateTime;outAYear,AMonth,AWeekOfMonth,
ADayOfWeek:Word);
描述:
DecodeDateMonthWeek方法根据TDateTime类型参数AValue得到相应的年份、月份、月份中的第几个
星期、星期几
AYear:年份
AMonth:月份,1到12
AWeekOfMonth:在该月份中的第几个星期
ADayOfWeek:星期几。星期一为1。
●procedureDecodeDateTime(constAValue:TDateTime;outAYear,AMonth,ADay,AHour,AMinute,
ASecond,AMilliSecond:Word);
描述:
DecodeDateTime方法根据TDateTime类型参数AValue得到相应的年份、月份、日子、小时、分、秒、
毫秒。
●procedureDecodeDateWeek(constAValue:TDateTime;outAYear,AWeekOfYear,ADayOfWeek:Word);
描述:
DecodeDateWeek方法根据TDateTime类型参数AValue得到相应的年份、在该年中的第几个星期、星期几。
delphi access 日期型 delphi datetime
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Delphi 泛型
Delphi 泛型C++中的模板、C#等语言中泛型技术,给许多操作不同类型数据的软件人员提供了一个很好的方法。其类型的“可变”性,让许多用过的软件人员所心喜。但是在Delphi 2009以前的版本中,是从来没有的。让许多不会用Delphi中TList的人员,大大的抱怨。如果用好
delphi button dictionary string integer -
delphi 建 access表 delphi access violation
Delphi常见的运行期Access Violation错误有哪些?如何防止? 任何软件开发都会遇到这样的情况:你写好程序并测试,然后到处发送,结果用户告诉你它失败了。 你可能考虑用编译指令{$
delphi 建 access表 Access Delphi 空字符串 -
mysql是否支持ddl回滚
目录索引的概念 数据库索引 索引的作用  
mysql是否支持ddl回滚 mysql 表名 字段 主键