1 占位符
1.1 单个占位符
String s = String.format("Hello %s,Welcome to my blog!", "jerry");
System.out.println(s);//Hello jerry,Welcome to my blog!
- 1
- 2
1.2 多个占位符
1.2.1 按顺序
String s = String.format("Hello %s%s%s", "jerry-", "li", ",welcome!");
- 1
1.2.2 按索引
String s = String.format("Hello %2$s%3$s%1$s", "li-", "heng-", "jie");
- 1
2 对整数格式化
int n2 = 9999999;
System.out.printf("%+(,d %n", n2);
- 1
- 2
参数 | 含义 |
---|---|
- | 在最小宽度内左对齐,不可以与0标识一起使用。 |
0 | 若内容长度不足最小宽度 |
+ | 结果总包含一个+或-号。 |
空格 | 正数前加空格 |
, | 只用与十进制 |
( | 若结果为负数 |
3 对浮点数格式化
double n = 3.1415926;
String s = String.format("%f %n", num);
- 1
- 2
参数 | 含义 |
---|---|
- | 在最小宽度内左对齐 |
0 | 若内容长度不足最小宽度 |
+ | 结果总包含一个+或-号。 |
空格 | 正数前加空格 |
, | 只用与十进制 |
( | 若结果为负数 |
4 对日期、时间格式化
对日期格式化的时候不能像对数字那样多种格式对应一个数字,
分为日期格式化及时间格式化两部分,如果希望格式化之后的格式是:
2017-01-13 12:05:30,需要先格式化日期,然后再格式化时间。
如下:
Date date = new Date();
String dateFormat = String.format("%tF %tT ", date, date);
System.out.println(dateFormat);
- 1
- 2
- 3
日期格式化:
参数 | 含义 |
---|---|
c | 星期六 十月 27 14:21:20 CST 2007 |
F | 2007-10-27 |
D | 10/27/07 |
r | 02:25:51 下午 |
T | 14:28:16 |
R | 14:28 |
b | 月份简称 |
B | 月份全称 |
a | 星期简称 |
A | 星期全称 |
C | 年前两位(不足两位补零) |
y | 年后两位(不足两位补零) |
j | 当年的第几天 |
m | 月份(不足两位补零) |
d | 日期(不足两位补零) |
e | 日期(不足两位不补零 |
时间格式化:
参数 | 含义 |
---|---|
H | 24小时制的小时(不足两位补零) |
k | 24小时制的小时(不足两位不补零) |
I | 12小时制的小时(不足两位补零) |
i | 12小时制的小时(不足两位不补零) |
M | 分钟(不足两位补零) |
S | 秒(不足两位补零) |
L | 毫秒(不足三位补零) |
N | 毫秒(不足9位补零) |
p | 小写字母的上午或下午标记,如中文为“下午”,英文为pm |
z | 相对于GMT的时区偏移量,如+0800 |
Z | 时区缩写,如CST |
s | 自1970-1-1 00:00:00起经过的秒数 |
Q | 自1970-1-1 00:00:00起经过的豪秒 |
备注:(System.out.printf()==System.out.print(String.format())