delphi 各种时间类型之间的转换函
各种时间类型之间的转换函
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类型的时间,该值为一个介01之间的小数。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事件,提示错误信息
时间部分的字符串必须是由23个的数值字串构成,并且采用在Windows区域设置中设置的分隔字符进行分隔,其格式要求符合在Windows区域设定中的设定,其中HH,MM(小时,分)必须添加,SS(秒)可选,也可以在后面加入 Am和Pm区分上下午,这时候系统将认为采用12小时表示法,否则认为采用24小时表示法
日期部分的格式要求符合Windows区域设置中的短日期格式,也是23个的数值字串构成,如果在字符串中只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字串中的格式得到要输出时间字符串,例如要输出“今天是200255日,星期五”就可以用这两种方法,这两个方法的作用相同,只是一个是通过共享变量取得输出字符串,值在Result中,一个是通过返回值取得输出字符串,DateTime参数是希望输出的日期值,Format由格式标志与附加字符串组合而成。附加字串用””圈起,就像C中的Printf函数.如“今天是200255日,星期五”的Format值就 ‘”今天是”yyyy”年”mm”月”dd”日, dddd’,yyyy,mm,dd,dddd都是格式标识,各种格式标识的解释如下
d :用一位或两位整数显示日子131
dd :用两位整数显示日子,不足两位的0补足0131
ddd :按缩略方式显示当前的星期号,如果Windows是英文版,则显示为Mon-Sun,如果是中文版,则显示同dddd
dddd :按完整方式显示当前的星期号,如Windows是英文版,则显示Monday-SumDay,如果是中文版,则显示星期一~星期日
ddddd :按区域设置中的短日期格式输出
dddddd :按区域设置中的长日期格式输出
m :用一位或两位整数显示月份112
mm :用两位整数显示月份,不足两位的0补足0112
mmm :使用缩略方式显示月份名称,英文版显示为Jan-Dec,中文版同mmmm
mmmm :使用完整方式显示月份名称,英文版显示为January-December,中文版为一月~十二
yy :按两位整数方式显示年份0099
yyyy :按四位整数方式显示年份00009999
h :用一位或两位整数显示小时023
hh :用两位整数显示小时,不足两位的0补足0023
n :用一位或两位整数显示分钟060
nn :用两位整数显示分钟,不足两位的0补足0060
s :用一位或两位整数显示秒数060
ss :用两位整数显示秒数,不足两位的0补足0060
z :用一位至两位整数显示毫秒数(0999
zzz :用三位整数显示毫秒数,不足三位的用0补足000999
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;
在使用两位年份时的起始年份
📱 扫码关注公众号
扫描二维码关注我们,获取更多精彩内容
实时更新 · 干货满满