String.format() 方法的用处

在工作中有时需要生成序列号或时间类型时小于10补零的方法:

下面举个例子:

// 我要生成一串序列号  E_00001  一直到  E_00999
 public void console(Long[] ids){
        String m = "E_";
        for (int i = 1; i <= 999; i++) {
           /**
             * % 表示占位符开始
             * 0 表示宽度不足时补 0
             * 5 表示宽度为 5 位数
             * d 表示数字
             */
            String format = String.format("%05d", i);
            System.out.println(m+format);
        }
    }

 

1、常用转换符

转换符 说明 示例
%s 字符串类型 "abcd1234"
%c 字符类型 'a'
%b 布尔类型 true
%d 整数类型(十进制) 99
%x 整数类型(十六进制) FF
%o 整数类型(八进制) 77
%f 浮点类型 99.99
%a 浮点类型(十六进制) FF.35AE
%e 指数类型 9.38e+5
%g 通用浮点类型(f和e类型中较短的)  
%h 散列码  
%% 百分比类型  
%n 换行符  
%tx 日期与时间类型(x代表不同的日期与时间转换符)  

 

 

2、搭配转换符的标志

标志 说明 示例 结果
+ 为正数或负数添加符号 format("%+d",99) +99
- 左对齐 format("%-5s","str") |str  |
0 数字前补0 format("%05d",99) 00099
空格 在整数前添加指定数量空格 format("% 5d",99) |   99|
, 用,对数字进行格式化(三位一逗) format("%,d",321321) 321,321
( 使用括号包含负数 format("%(d",-99) 99
#

如果是浮点数,则包含小数点

如果是十六进制或八进制则添加0X或0

format("%#x",99)

format("%#o",99)

0x63

0143

< 格式化前一个转换符所描述的参数 format("%f和%<3.2f",99.45) 99.450000和99.45
$ 被格式化的参数索引 format("%1$d,%2$s", 99,"abc") 99,abc

 

3、日期和时间 

3.1、常见日期和时间组合的格式 

转换符 说明 示例
c 包括全部日期和时间信息 星期六 十月 27 14:21:20 CST 2007
F 年-月-日”格式 2007-10-27
D “月/日/年”格式 10/27/07
r “HH:MM:SS PM”格式(12时制) 02:25:51 下午
T HH:MM:SS”格式(24时制) 14:28:16
R “HH:MM”格式(24时制) 14:28

 

 

3.2、 日期格式化转换符 

转换符 说明 示例
b或者h 月份简称

中:十月

英:Oct

B 月份全称

中:十月

英:October

a 星期的简称

中:星期六

英:Sat

A 星期的全称

中:星期六

英:Saturday

C 年的前两位数字(不足两位前面补0) 20
y 年的后两位数字(不足两位前面补0) 07
Y 4位数字的年份(不足4位前面补0) 2007
j 一年中的天数(即年的第几天) 300
m 两位数字的月份(不足两位前面补0) 10
d 两位数字的日(不足两位前面补0) 27
e 月份的日(前面不补0) 5

 

3.3、 时间格式化转换符 

转换符 说明 示例
H 2位数字24时制的小时(不足2位前面补0) 15
I 2位数字12时制的小时(不足2位前面补0) 03
k 2位数字24时制的小时(前面不补0) 15
l 2位数字12时制的小时(前面不补0) 3
M 2位数字的分钟(不足2位前面补0) 03
S 2位数字的秒(不足2位前面补0) 09
L 3位数字的毫秒(不足3位前面补0) 015
N 9位数字的毫秒数(不足9位前面补0) 562000000
p 小写字母的上午或下午标记

中:下午

英:pm

z 相对于GMT的RFC822时区的偏移量 +0800
Z 时区缩写字符串 CST

 

上一篇:msqyl-


下一篇:i++在两个线程执行100次,最终的结果是