Delphi 格式化日期/浮动值 FormatDateTime 和 FormatFloat 用法
Delphi 格式化日期/浮动值 FormatDateTime 和 FormatFloat 用法
1、FormatDateTime 格式化日期
1.1 原型:
1 2 3 4 5 6 7 8 9 10
|
function FormatDateTime( const Format: string ; DateTime: TDateTime): string ; begin DateTimeToString(Result, Format, DateTime); end ; function FormatDateTime( const Format: string ; DateTime: TDateTime; const FormatSettings: TFormatSettings): string ; begin DateTimeToString(Result, Format, DateTime, FormatSettings); end ; |
1.2 Format 参数介绍:
c 以短时间格式显示时间,即全部是数字的表示
1
|
FormatdateTime( 'c' ,now); //2020-11-6 9:55:40 |
d 对应于时间中的日期,日期是一位则显示一位,两位则显示两位
1
|
FormatdateTime( 'd' ,now); //1~31 |
dd 和d的意义一样,但它始终是以两位来显示的
1
|
FormatdateTime( 'dd' ,now); //01~31 |
ddd 显示的是星期几
1
|
FormatdateTime( 'ddd' ,now); //星期一 |
dddd 和ddd显示的是一样的。 但上面两个如果在其他国家可能不一样。
ddddd(5个d) 以短时间格式显示年月日
1
|
FormatdateTime( 'ddddd' ,now); //2020-11-06 |
dddddd(6个d) 以长时间格式显示年月日
1
|
FormatdateTime( 'dddddd' ,now); //2020年11月6日 |
e/ee/eee/eeee 以相应的位数显示年
1
|
FormatdateTime( 'ee' ,now); //04 (表示04年) |
m/mm/mmm/mmmm 表示月
1 2 3 4
|
FormatdateTime( 'm' ,now); //9 FormatdateTime( 'mm' ,now); //09 FormatdateTime( 'mmm' ,now); //9月 FormatdateTime( 'mmmm' ,now); //9月 |
yy/yyyy 表示年
1 2
|
FormatdateTime( 'yy' ,now); //20 FormatdateTime( 'yyyy' ,now); //2020 |
h/hh, n/nn, s/ss ,z/zzz 分别表示小时、分、秒、毫秒
t 以短时间格式显示时间
1
|
FormatdateTime( 't' ,now); //10:17 |
tt 以长时间格式显示时间
1
|
FormatdateTime( 'tt' ,now); //10:18:46 |
ampm 以长时间格式显示上午还是下午
1
|
FormatdateTime( 'ttampm' ,now); //10:22:57上午 |
1.3 加普通的字符串
可以用双引号隔开那些特定义的字符,这样普通字符串中如果含特殊的字符就不会被显示为时间格式:
1
|
FormatdateTime( '"today is" c' ,now); //today is 2020-11-6 10:26:58 |
1.4 加"-"或"\"来分开日期:
1 2
|
FormatdateTime( '"today is" yy-mm-dd' ,now); //today is 20-11-06 FormatdateTime( '"today is" yy\mm\dd' ,now); //today is 20\11\06 |
1.5 用":"来分开时间
1
|
FormatdateTime( '"today is" hh:nn:ss' ,now); //today is 10:32:23 |
1.6 Delphi 示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
procedure FormatDateTimes; var s: string ; begin //FormatDateTime 的参数1是 String 格式指令, 参数2是 TDateTime 类型的时间 s := FormatDateTime( 'c' , Now); {返回: 2007-12-18 23:56:05} {指令 c 表示用短格式显示日期与时间} s := FormatDateTime( 'd' , Now); {返回: 19} s := FormatDateTime( 'd' , StrToDateTime( '2008-1-1' )); {返回: 1} {d 表示日期} s := FormatDateTime( 'dd' , Now); {返回: 19} s := FormatDateTime( 'dd' , StrToDateTime( '2008-1-1' )); {返回: 01} {dd 表示双位日期} s := FormatDateTime( 'ddd' , Now); {返回: 星期三} s := FormatDateTime( 'dddd' , Now); {返回: 星期三} {ddd 与 dddd 表示星期; 可能对不同的语种会有区别} s := FormatDateTime( 'ddddd' , Now); {返回: 2007-12-19} {ddddd 五个 d 表示短格式日期} s := FormatDateTime( 'dddddd' , Now); {返回: 2007年12月19日} {dddddd 六个 d 表示长格式日期} s := FormatDateTime( 'e' , Now); {返回: 7} {e 表示年, 1位} s := FormatDateTime( 'ee' , Now); {返回: 07} {ee 表示年, 2位} s := FormatDateTime( 'eee' , Now); {返回: 2007} s := FormatDateTime( 'eeee' , Now); {返回: 2007} {eee 与 eeee 返回4位数年} s := FormatDateTime( 'm' , Now); {返回: 12} {m 表示月, 1位} s := FormatDateTime( 'mm' , StrToDateTime( '2008-1-1' )); {返回: 01} {mm 表示月, 2位} s := FormatDateTime( 'mmm' , Now); {返回: 十二月} s := FormatDateTime( 'mmmm' , Now); {返回: 十二月} {mmm 与 mmmm 表示长格式月} s := FormatDateTime( 'y' , Now); {返回: 07} s := FormatDateTime( 'yy' , Now); {返回: 07} s := FormatDateTime( 'yyy' , Now); {返回: 2007} s := FormatDateTime( 'yyyy' , Now); {返回: 2007} {y yy yyy yyyy 表示年; 和 e 略有不同} s := FormatDateTime( 't' , Now); {返回: 0:21} s := FormatDateTime( 'tt' , Now); {返回: 0:22:13} {t tt 表示时间} s := FormatDateTime( 'ampm' , Now); {返回: 上午} s := FormatDateTime( 'tampm' , Now); {返回: 0:24 上午} {ampm 表示上午、下午} s := FormatDateTime( 'h' , StrToDateTime( '2007-12-30 9:58:06' )); {返回: 9} s := FormatDateTime( 'hh' , StrToDateTime( '2007-12-30 9:58:06' )); {返回: 09} {h hh 表示时} s := FormatDateTime( 'n' , StrToDateTime( '2007-12-30 9:58:06' )); {返回: 58} s := FormatDateTime( 'nn' , StrToDateTime( '2007-12-30 9:58:06' )); {返回: 58} {n nn 表示分} s := FormatDateTime( 's' , StrToDateTime( '2007-12-30 9:58:06' )); {返回: 6} s := FormatDateTime( 'ss' , StrToDateTime( '2007-12-30 9:58:06' )); {返回: 06} {s ss 表示秒} s := FormatDateTime( 'z' , Now); {返回: 24} s := FormatDateTime( 'zz' , Now); {返回: 524} s := FormatDateTime( 'zzz' , Now); {返回: 524} {z zz zzz 表示毫秒} s := FormatDateTime( 'yy\mm\dd' , Now); {返回: 07\12\19} s := FormatDateTime( 'yy/mm/dd' , Now); {返回: 07-12-19} s := FormatDateTime( 'yy-mm-dd' , Now); {返回: 07-12-19} s := FormatDateTime( 'yy*mm*dd' , Now); {返回: 07*12*19} {使用分隔符, - 是默认的, / 是与 - 等效的, 假如我非要用 / 显示呢?} s := FormatDateTime( 'yy"/"mm"/"dd' , Now); {返回: 07/12/19} s := FormatDateTime( '"当前时间是: "yyyy-m-d h:n:s:zz' , Now); {返回: 当前时间是: 2007-12-19 0:47:16:576} {混入的字符串要包含在双引号中} ShowMessage(s); end ; |
2、FormatFloat 格式化浮动值
2.1 原型:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
function FormatFloat( const Format: string ; Value: Extended ): string ; var Buffer: array [ 0..255 ] of Char ; begin if Length(Format) > SizeOf(Buffer) - 32 then ConvertError(@SFormatTooLong); SetString(Result, Buffer, FloatToTextFmt(Buffer, Value, fvExtended, PChar (Format))); end ; function FormatFloat( const Format: string ; Value: Extended ; const FormatSettings: TFormatSettings): string ; var Buffer: array [ 0..255 ] of Char ; begin if Length(Format) > SizeOf(Buffer) - 32 then ConvertError(@SFormatTooLong); SetString(Result, Buffer, FloatToTextFmt(Buffer, Value, fvExtended, PChar (Format), FormatSettings)); end ; |
Extended类型是所有浮点值中表示范围最大的,如果传入该方法的参数比如Double或者其他,则可以保存不会超出范围。
2.2 参数:
0 指定相应的位数的指令。
1
|
FormatFloat( '000.000' , 33.33 ); //033.330 |
注意一点,如果整数部分的0的个数小于Value参数中整数的位数,则没有效果如:
1
|
FormatFloat( '0.00' , 33.33 ); //33.33 |
如果小数部分的0小于Value中小数的倍数,则会截去相应的小数和位数如:
1
|
FormatFloat( '0.0' , 33.33 ); //33.3 |
在整数0中指定逗号(财务逗号分隔),这个整数位数必须大于3个,才会有逗号出句
1
|
FormatFloat( '0,000.0' , 3333.33 ); //3,333.3 |
这样也可以
1
|
FormatFloat( '000,0.0' , 3333.33 ); //3,333.3 |
它的规律,#和0的用法基本一样
1
|
FormatFloat( '##.##' , 33.33 ); //33.00 |
E 科学表示法
1 2 3
|
FormatFloat( '0.00E+00' , 3333.33 ); //3.33E+03 FormatFloat( '0000.00E+00' , 3333.33 ); //3333.33E+00 FormatFloat( '00.0E+0' , 3333.33 ); //33.3E+3 |
靠E右边的0来支配
创建时间:2015.09.12 更新时间:2020.11.06