Formatter格式化

来源:互联网 发布:肇庆市房地产数据 编辑:程序博客网 时间:2024/05/02 04:42

Formatter格式化

Java提供了对数值、字符串和日期/时间数据的常规格式和特定于语言环境的输出的支持,主要是自由输出。java.util.Formatter(1.5后提供)转换为指定格式的字符串,用于实现printf和String.format()。以下是其中格式化公式format的介绍

整数

格式化公式:%[index$][标识][最小宽度]转换方式

index$:指定是第几个参数

最小宽度:转换后的整数的最小位数

标识

1.  '-':在最小宽度内左对齐,不可以与“用0填充”同时使用

2.  '#':只适用于8进制和16进制,8进制时在结果前面增加一个0,16进制时在结果前面增加0x

3.  '+':结果总是包括一个符号(一般情况下只适用于10进制,若对象为BigInteger才可以用于8进制和16进制)

4.  '  ':正值前加空格,负值前加负号(一般情况下只适用于10进制,若对象为BigInteger才可以用于8进制和16进制)

5.  '0':结果将用零来填充

6.  ',':只适用于10进制,每3位数字之间用“,”分隔

7.  '(':若参数是负数,则结果中不添加负号而是用圆括号把数字括起来(同‘+’具有同样的限制)

标识可以有多个。

转换方式

    1. d-十进制

2. o-八进制

3. x或X-十六进制

浮点数

格式化公式:%[index$][标识][最少宽度][.精度]转换方式

浮点数的格式化公式比整数的多了一个精度,用于控制小数点后的位数。

标识

1.  '-':在最小宽度内左对齐,不可以与“用0填充”同时使用

2.  '+':结果总是包括一个符号

3.  '  ':正值前加空格,负值前加负号

4.  '0':结果将用零来填充

5.  ',':每3位数字之间用“,”分隔(只适用于fgG的转换)

6.  '(': 若参数是负数,则结果中不添加负号而是用圆括号把数字括起来(只适用于eEfgG的转换)

转换方式

1.  'e', 'E'  --  结果被格式化为用计算机科学记数法表示的十进制数

2.  'f'          --  结果被格式化为十进制普通表示方式

3.  'g', 'G'    --  根据具体情况,自动选择用普通表示方式还是科学计数法方式

4.  'a', 'A'    --   结果被格式化为带有效位数和指数的十六进制浮点数

百分号

百分比符号“%”是特殊格式的一个前缀。那么我们要输入一个百分比符号该怎么办呢?肯定是需要转义字符的,但是要注意的是,在这里转义字符不是“\”,而是“%”。换句话说,下面这条语句可以输出一个“12%”:

System.out.println(String.format("%1$d%%", 12));

日期

格式化公式:%[index$]t转换方式

可以操作Date类型

转换方式:

1.  'B':特定于语言环境的月份全称,例如 "January" 和 "February"。

2.  'b':特定于语言环境的月份简称,例如 "Jan" 和 "Feb"。

3.  'h':与 'b' 相同。

4.  'A':特定于语言环境的星期几全称,例如 "Sunday" 和 "Monday"

5.  'a':特定于语言环境的星期几简称,例如 "Sun" 和 "Mon"

6.  'C':除以 100 的四位数表示的年份,被格式化为必要时带前导零的两位数,即 00 – 99

7.  'Y':年份,被格式化为必要时带前导零的四位数(至少),例如,0092 等于格里高利历的 92 CE。

8.  'y':年份的最后两位数,被格式化为必要时带前导零的两位数,即 00 - 99。

9.  'j':一年中的天数,被格式化为必要时带前导零的三位数,例如,对于格里高利历是 001 - 366。

10. 'm':月份,被格式化为必要时带前导零的两位数,即 01 - 13。

11. 'd':一个月中的天数,被格式化为必要时带前导零两位数,即 01 – 31

12. 'e':一个月中的天数,被格式化为两位数,即 1 - 31。

时间

格式化公式:%[index$]t转换方式

操作代表时间long(起始时间为1970.1.1)

转换方式:

1.  'H':24 小时制的小时,被格式化为必要时带前导零的两位数,即 00 - 23。

2.  'I':12 小时制的小时,被格式化为必要时带前导零的两位数,即 01 - 12。

3.  'k': 24 小时制的小时,即 0 - 23。

4.  'l':12 小时制的小时,即 1 - 12。

5.  'M':小时中的分钟,被格式化为必要时带前导零的两位数,即 00 - 59。

6.  'S':分钟中的秒,被格式化为必要时带前导零的两位数,即 00 - 60 ("60" 是支持闰秒所需的一个特殊值)。

7.  'L':秒中的毫秒,被格式化为必要时带前导零的三位数,即 000 - 999。

8.  'N':秒中的毫微秒,被格式化为必要时带前导零的九位数,即 000000000 - 999999999。

9.  'p':特定于语言环境的 上午或下午 标记以小写形式表示,例如 "am" 或 "pm"。使用转换前缀 'T' 可以强行将此输出转换为大写形式。

10. 'z':相对于 GMT 的 RFC 822 格式的数字时区偏移量,例如 -0800。

11. 'Z':表示时区缩写形式的字符串。Formatter 的语言环境将取代参数的语言环境(如果有)。

12. 's':自协调世界时 (UTC) 1970 年 1 月 1 日 00:00:00 至现在所经过的秒数,即 Long.MIN_VALUE/1000 与 Long.MAX_VALUE/1000 之间的差值。

13. 'Q':自协调世界时 (UTC) 1970 年 1 月 1 日 00:00:00 至现在所经过的毫秒数,即 Long.MIN_VALUE 与 Long.MAX_VALUE 之间的差值。

日期时间混合

格式化公式:%[index$]t转换方式

转换方式:

1.  'R':24 小时制的时间,被格式化为"%tH:%tM"

2.  'T':24 小时制的时间,被格式化为"%tH:%tM:%tS"。

3.  'r':12 小时制的时间,被格式化为"%tI:%tM:%tS %Tp"。上午或下午标记 ('%Tp') 的位置可能与语言环境有关。

4.  'D':日期,被格式化为 "%tm/%td/%ty"。

5.  'F':ISO 8601 格式的完整日期,被格式化为"%tY-%tm-%td"。

6.  'c':日期和时间,被格式化为 "%ta %tb %td %tT %tZ %tY",例如 "Sun Jul 20 16:17:00 EDT 1969"

字符串

格式化公式:%[index$]s/S,%s/%S

其中s调用的是formattable接口的方法formatTo,如果没有实现该接口,则使用toString方法

其中‘S’对应,将字符串大写

%s/%S,按顺序输出,加index后可以调整输出顺序

原创粉丝点击