Delphi格式化函数Format、FormatDateTime和FormatFloat

1.Format 根据指定所需要的格式,格式化字符串。
原型:

functionFormat( constFormat: string; constArgs: array of const): string;

例子:

var
s: string;
begin
//指令类型type

s:=Format( '最大整数是:%d;最小整数是:%d', [MaxInt,Low(Integer)]);
//返回:最大整数是:2147483647;最小整数是:-2147483648
{提示:格式指令必须以%开始,不区分大小写,%d代表一个整数;第二个参数是一个变体数组}

s:=Format( '最大的无负号整数是:%u', [High(Cardinal)]);
//返回:最大的无负号整数是:4294967295
{%u表示一个无负号整数}

s:=Format( '输入-2的结果是:%u', [-2]);
//返回:输入-2的结果是:4294967294
{如果对应%u的是个负数,则返回:无负号整数最大值-这个数的绝对值+1}

s:=Format( '%s!%s', ['你好','我是万一']);
//返回:你好!我是万一
{%s表示字符串}

s:=Format( '%f', [Pi]);
//返回:Pi的值是:3.14
{%f表示浮点数,保留或凑够两位小数点}

s:=Format( '%g', [01.2345000]);
//返回:1.2345
{%g表示浮点数,会去掉多余的0}

s:=Format( '%n', [12345.6789]);
//返回:12,345.68
{%n表示浮点数,整数部分使用千位分隔符,保留两位小数点}

s:=Format( '%m', [12345.6789]);
//返回:¥12,345.68
{%m表示浮点数,加货币记号,转换结果取决于系统的地域设置}

s:=Format( '%e', [12345.6789]);
//返回:1.23456789000000E+004
{%e用科学计数法表示整数或浮点数}

s:=Format( '%p', [@Self]);
//返回:0012F5BC
{%p表示指针地址,用十六进制表示}

s:=Format( '%x', [255]);
//返回:FF
{%x用十六进制表示一个整数}


//Index

s:=Format( '%s%s', ['万','一']);
s:=Format( '%0:s%1:s', ['万','一']);
//返回:万一
{上面两行的结果是一样的,0:对应数组中的第一个值;1:对应数组中的第二个值}

s:=Format( '%1:s%0:s', ['万','一']);
//返回:一万
{翻转了一下顺序}

s:=Format( '%1:s%0:s%0:s%1:s', ['万','一']);
//返回:一万万一
{反复使用}


//Width与对齐方式

s:=Format( '%d,%8d,%d', [1,2,3]);
//返回:1,2,3
{给第二个值指定了8个字符的宽度,缺少的用空格填充;如果指定少了则无效}

s:=Format( '%d,%-8d,%d', [1,2,3]);
//返回:1,2,3
{-表示左对齐,默认是右对齐的;-符号在Width前面、Index后面}


//指定精度prec

s:=Format( '%.9f', [Pi]);
//返回:3.141592654
{指定小数点的位数,取值范围1-9,输入0也当1用}

s:=Format( '%.5d', [12]);
//返回:00012
{这是给整数指定位数,如果小了则无效}

s:=Format( '%.3s', ['Format']);
//返回:For
{给字符串指定位数,如果大了则无效}

s:=Format( '%.3e', [123.456]);
//返回:1.23E+002
{给科学计数法指定位数}


//指令顺序:

{"%"[index":"]["-"][width]["."prec]type}

ShowMessage(s);
end;

2.FormatDateTime 格式化日期值
原型:

functionFormatDateTime( constFormat: string;DateTime:TDateTime): string;

例子:

var
s: string;
begin
//FormatDateTime的参数1是String格式指令,参数2是TDateTime类型的时间

s:=FormatDateTime( 'c',Now); {返回:2007-12-1823: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}
{yyyyyyyyyy表示年;和e略有不同}

s:=FormatDateTime( 't',Now); {返回:0:21}

s:=FormatDateTime( 'tt',Now); {返回:0:22:13}
{ttt表示时间}

s:=FormatDateTime( 'ampm',Now); {返回:上午}

s:=FormatDateTime( 'tampm',Now); {返回:0:24上午}
{ampm表示上午、下午}

s:=FormatDateTime( 'h',StrToDateTime( '2007-12-309:58:06')); {返回:9}

s:=FormatDateTime( 'hh',StrToDateTime( '2007-12-309:58:06')); {返回:09}
{hhh表示时}

s:=FormatDateTime( 'n',StrToDateTime( '2007-12-309:58:06')); {返回:58}

s:=FormatDateTime( 'nn',StrToDateTime( '2007-12-309:58:06')); {返回:58}
{nnn表示分}

s:=FormatDateTime( 's',StrToDateTime( '2007-12-309:58:06')); {返回:6}

s:=FormatDateTime( 'ss',StrToDateTime( '2007-12-309:58:06')); {返回:06}
{sss表示秒}

s:=FormatDateTime( 'z',Now); {返回:24}

s:=FormatDateTime( 'zz',Now); {返回:524}

s:=FormatDateTime( 'zzz',Now); {返回:524}
{zzzzzz表示毫秒}

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-dh:n:s:zz',Now);
{返回:当前时间是:2007-12-190:47:16:576}
{混入的字符串要包含在双引号中}

ShowMessage(s);
end;

3.FormatFloat 格式化浮点数
原型:

functionFormatFloat( constFormat: string;Value:Extended): string;

例子:

var
s: string;
begin
//FormatFloat的参数1是String格式指令,参数2是实数类型Extended

s:=FormatFloat( '###.###', 12. 3456);
//返回:12.346
s:=FormatFloat( '000.000', 12. 3456);
//返回:012.346

s:=FormatFloat( '#.###', 12. 3);
//返回:12.3
s:=FormatFloat( '0.000', 12. 3);
//返回:12.300

s:=FormatFloat( '#,#.#', 1234567);
//返回:1,234,567
s:=FormatFloat( '0,0.0', 1234567);
//返回:1,234,567.0

s:=FormatFloat( '0.00E+0', 1234567);
//返回:1.23E+6
s:=FormatFloat( '0.00E+00', 1234567);
//返回:1.23E+06

//在科学计数法中使用#好像不合适?

ShowMessage(s);
end;

参看资料:

http://www.cnblogs.com/del/archive/2007/12/18/1005161.html
http://www.cnblogs.com/del/archive/2007/12/19/1005205.html
http://www.cnblogs.com/del/archive/2007/12/19/1005212.html
http://www.cnblogs.com/sonicit/archive/2007/06/04/769882.html

1.Format 根据指定所需要的格式,格式化字符串。
原型:

functionFormat( constFormat: string; constArgs: array of const): string;

例子:

var
s: string;
begin
//指令类型type

s:=Format( '最大整数是:%d;最小整数是:%d', [MaxInt,Low(Integer)]);
//返回:最大整数是:2147483647;最小整数是:-2147483648
{提示:格式指令必须以%开始,不区分大小写,%d代表一个整数;第二个参数是一个变体数组}

s:=Format( '最大的无负号整数是:%u', [High(Cardinal)]);
//返回:最大的无负号整数是:4294967295
{%u表示一个无负号整数}

s:=Format( '输入-2的结果是:%u', [-2]);
//返回:输入-2的结果是:4294967294
{如果对应%u的是个负数,则返回:无负号整数最大值-这个数的绝对值+1}

s:=Format( '%s!%s', ['你好','我是万一']);
//返回:你好!我是万一
{%s表示字符串}

s:=Format( '%f', [Pi]);
//返回:Pi的值是:3.14
{%f表示浮点数,保留或凑够两位小数点}

s:=Format( '%g', [01.2345000]);
//返回:1.2345
{%g表示浮点数,会去掉多余的0}

s:=Format( '%n', [12345.6789]);
//返回:12,345.68
{%n表示浮点数,整数部分使用千位分隔符,保留两位小数点}

s:=Format( '%m', [12345.6789]);
//返回:¥12,345.68
{%m表示浮点数,加货币记号,转换结果取决于系统的地域设置}

s:=Format( '%e', [12345.6789]);
//返回:1.23456789000000E+004
{%e用科学计数法表示整数或浮点数}

s:=Format( '%p', [@Self]);
//返回:0012F5BC
{%p表示指针地址,用十六进制表示}

s:=Format( '%x', [255]);
//返回:FF
{%x用十六进制表示一个整数}


//Index

s:=Format( '%s%s', ['万','一']);
s:=Format( '%0:s%1:s', ['万','一']);
//返回:万一
{上面两行的结果是一样的,0:对应数组中的第一个值;1:对应数组中的第二个值}

s:=Format( '%1:s%0:s', ['万','一']);
//返回:一万
{翻转了一下顺序}

s:=Format( '%1:s%0:s%0:s%1:s', ['万','一']);
//返回:一万万一
{反复使用}


//Width与对齐方式

s:=Format( '%d,%8d,%d', [1,2,3]);
//返回:1,2,3
{给第二个值指定了8个字符的宽度,缺少的用空格填充;如果指定少了则无效}

s:=Format( '%d,%-8d,%d', [1,2,3]);
//返回:1,2,3
{-表示左对齐,默认是右对齐的;-符号在Width前面、Index后面}


//指定精度prec

s:=Format( '%.9f', [Pi]);
//返回:3.141592654
{指定小数点的位数,取值范围1-9,输入0也当1用}

s:=Format( '%.5d', [12]);
//返回:00012
{这是给整数指定位数,如果小了则无效}

s:=Format( '%.3s', ['Format']);
//返回:For
{给字符串指定位数,如果大了则无效}

s:=Format( '%.3e', [123.456]);
//返回:1.23E+002
{给科学计数法指定位数}


//指令顺序:

{"%"[index":"]["-"][width]["."prec]type}

ShowMessage(s);
end;

2.FormatDateTime 格式化日期值
原型:

functionFormatDateTime( constFormat: string;DateTime:TDateTime): string;

例子:

var
s: string;
begin
//FormatDateTime的参数1是String格式指令,参数2是TDateTime类型的时间

s:=FormatDateTime( 'c',Now); {返回:2007-12-1823: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}
{yyyyyyyyyy表示年;和e略有不同}

s:=FormatDateTime( 't',Now); {返回:0:21}

s:=FormatDateTime( 'tt',Now); {返回:0:22:13}
{ttt表示时间}

s:=FormatDateTime( 'ampm',Now); {返回:上午}

s:=FormatDateTime( 'tampm',Now); {返回:0:24上午}
{ampm表示上午、下午}

s:=FormatDateTime( 'h',StrToDateTime( '2007-12-309:58:06')); {返回:9}

s:=FormatDateTime( 'hh',StrToDateTime( '2007-12-309:58:06')); {返回:09}
{hhh表示时}

s:=FormatDateTime( 'n',StrToDateTime( '2007-12-309:58:06')); {返回:58}

s:=FormatDateTime( 'nn',StrToDateTime( '2007-12-309:58:06')); {返回:58}
{nnn表示分}

s:=FormatDateTime( 's',StrToDateTime( '2007-12-309:58:06')); {返回:6}

s:=FormatDateTime( 'ss',StrToDateTime( '2007-12-309:58:06')); {返回:06}
{sss表示秒}

s:=FormatDateTime( 'z',Now); {返回:24}

s:=FormatDateTime( 'zz',Now); {返回:524}

s:=FormatDateTime( 'zzz',Now); {返回:524}
{zzzzzz表示毫秒}

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-dh:n:s:zz',Now);
{返回:当前时间是:2007-12-190:47:16:576}
{混入的字符串要包含在双引号中}

ShowMessage(s);
end;

3.FormatFloat 格式化浮点数
原型:

functionFormatFloat( constFormat: string;Value:Extended): string;

例子:

var
s: string;
begin
//FormatFloat的参数1是String格式指令,参数2是实数类型Extended

s:=FormatFloat( '###.###', 12. 3456);
//返回:12.346
s:=FormatFloat( '000.000', 12. 3456);
//返回:012.346

s:=FormatFloat( '#.###', 12. 3);
//返回:12.3
s:=FormatFloat( '0.000', 12. 3);
//返回:12.300

s:=FormatFloat( '#,#.#', 1234567);
//返回:1,234,567
s:=FormatFloat( '0,0.0', 1234567);
//返回:1,234,567.0

s:=FormatFloat( '0.00E+0', 1234567);
//返回:1.23E+6
s:=FormatFloat( '0.00E+00', 1234567);
//返回:1.23E+06

//在科学计数法中使用#好像不合适?

ShowMessage(s);
end;

参看资料:

http://www.cnblogs.com/del/archive/2007/12/18/1005161.html
http://www.cnblogs.com/del/archive/2007/12/19/1005205.html
http://www.cnblogs.com/del/archive/2007/12/19/1005212.html
http://www.cnblogs.com/sonicit/archive/2007/06/04/769882.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值