一、常规格式化
例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
String str=
null
;
str=String.format(
"Hi,%s"
,
"飞龙"
);
// 格式化字符串
System.out.println(str);
// 输出字符串变量str的内容
System.out.printf(
"字母a的大写是:%c %n"
,
'A'
);
System.out.printf(
"3>7的结果是:%b %n"
,
3
>
7
);
System.out.printf(
"100的一半是:%d %n"
,
100
/
2
);
System.out.printf(
"100的16进制数是:%x %n"
,
100
);
System.out.printf(
"100的8进制数是:%o %n"
,
100
);
System.out.printf(
"50元的书打8.5折扣是:%f 元%n"
,
50
*
0.85
);
System.out.printf(
"上面价格的16进制数是:%a %n"
,
50
*
0.85
);
System.out.printf(
"上面价格的指数表示:%e %n"
,
50
*
0.85
);
System.out.printf(
"上面价格的指数和浮点数结果的长度较短的是:%g %n"
,
50
*
0.85
);
System.out.printf(
"上面的折扣是%d%% %n"
,
85
);
System.out.printf(
"字母A的散列码是:%h %n"
,
'A'
);
}
|
运行结果:
1
2
3
4
5
6
7
8
9
10
11
12
|
字母a的大写是:A
3
>
7
的结果是:
false
100
的一半是:
50
100
的
16
进制数是:
64
100
的
8
进制数是:
144
50
元的书打
8.5
折扣是:
42.500000
元
上面价格的
16
进制数是:
0x1
.54p5
上面价格的指数表示:
4
.250000e+
01
上面价格的指数和浮点数结果的长度较短的是:
42.5000
上面的折扣是
85
%
字母A的散列码是:
41
|
这些字符串格式参数不但可以灵活将其他数据类型转换成字符串,而且可以与各种标志组合在一起,生成各种格式的字符串
例子:
1
2
3
4
5
6
7
8
9
10
|
String str=
null
;
str=String.format(
"格式参数$的使用:%1$d,%2$s"
,
99
,
"abc"
);
System.out.println(str);
System.out.printf(
"显示正负数的符号:%+d与%d%n"
,
99
,-
99
);
System.out.printf(
"最牛的编号是:%03d%n"
,
7
);
System.out.printf(
"Tab键的效果是:% 8d%n"
,
7
);
System.out.printf(
"整数分组的效果是:%,d%n"
,
9989997
);
System.out.printf(
"一本书的价格是:%2.2f元%n"
,
49.8
);
}
|
运行结果:
1
2
3
4
5
6
|
显示正负数的符号:+
99
与-
99
最牛的编号是:
007
Tab键的效果是:
7
整数分组的效果是:
9
,
989
,
997
一本书的价格是:
49.80
元
|
二、常见日期时间格式化
1
2
3
4
5
6
7
8
9
|
Date date=
new
Date();
System.out.printf(
"全部日期和时间信息:%tc%n"
,date);
System.out.printf(
"年-月-日格式:%tF%n"
,date);
System.out.printf(
"月/日/年格式:%tD%n"
,date);
System.out.printf(
"HH:MM:SS PM格式(12时制):%tr%n"
,date);
System.out.printf(
"HH:MM:SS格式(24时制):%tT%n"
,date);
System.out.printf(
"HH:MM格式(24时制):%tR"
,date);
}
|
运行结果:
1
2
3
4
5
6
|
年-月-日格式:
2007
-
10
-
28
月/日/年格式:
10
/
28
/
07
HH:MM:SS PM格式(
12
时制):
01
:
53
:
24
下午
HH:MM:SS格式(
24
时制):
13
:
53
:
24
HH:MM格式(
24
时制):
13
:
53
|
三、格式化日期字符串
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
Date date=
new
Date();
String str=String.format(Locale.US,
"英文月份简称:%tb"
,date);
System.out.println(str);
System.out.printf(
"本地月份简称:%tb%n"
,date);
str=String.format(Locale.US,
"英文月份全称:%tB"
,date);
System.out.println(str);
System.out.printf(
"本地月份全称:%tB%n"
,date);
str=String.format(Locale.US,
"英文星期的简称:%ta"
,date);
System.out.println(str);
System.out.printf(
"本地星期的简称:%tA%n"
,date);
System.out.printf(
"年的前两位数字(不足两位前面补0):%tC%n"
,date);
System.out.printf(
"年的后两位数字(不足两位前面补0):%ty%n"
,date);
System.out.printf(
"一年中的天数(即年的第几天):%tj%n"
,date);
System.out.printf(
"两位数字的月份(不足两位前面补0):%tm%n"
,date);
System.out.printf(
"两位数字的日(不足两位前面补0):%td%n"
,date);
System.out.printf(
"月份的日(前面不补0):%te"
,date);
}
|
运行结果:
1
2
3
4
5
6
7
8
9
10
11
12
|
本地月份简称:十月
英文月份全称:October
本地月份全称:十月
英文星期的简称:Sun
本地星期的简称:星期日
年的前两位数字(不足两位前面补
0
):
20
年的后两位数字(不足两位前面补
0
):
07
一年中的天数(即年的第几天):
301
两位数字的月份(不足两位前面补
0
):
10
两位数字的日(不足两位前面补
0
):
28
月份的日(前面不补
0
):
28
|
四、格式化时间字符串
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
Date date=
new
Date();
// 创建日期对象
System.out.printf(
"2位数字24时制的小时(不足2位前面补0):%tH%n"
,date);
System.out.printf(
"2位数字12时制的小时(不足2位前面补0):%tI%n"
,date);
System.out.printf(
"2位数字24时制的小时(前面不补0):%tk%n"
,date);
System.out.printf(
"2位数字12时制的小时(前面不补0):%tl%n"
,date);
System.out.printf(
"2位数字的分钟(不足2位前面补0):%tM%n"
,date);
System.out.printf(
"2位数字的秒(不足2位前面补0):%tS%n"
,date);
System.out.printf(
"3位数字的毫秒(不足3位前面补0):%tL%n"
,date);
System.out.printf(
"9位数字的毫秒数(不足9位前面补0):%tN%n"
,date);
String str=String.format(Locale.US,
"小写字母的上午或下午标记(英):%tp"
,date);
System.out.println(str);
// 输出字符串变量str的内容
System.out.printf (
"小写字母的上午或下午标记(中):%tp%n"
,date);
System.out.printf(
"相对于GMT的RFC822时区的偏移量:%tz%n"
,date);
System.out.printf(
"时区缩写字符串:%tZ%n"
,date);
System.out.printf(
"1970-1-1 00:00:00 到现在所经过的秒数:%ts%n"
,date);
System.out.printf(
"1970-1-1 00:00:00 到现在所经过的毫秒数:%tQ%n"
,date);
}
|
运行结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
2
位数字
12
时制的小时(不足
2
位前面补
0
):
03
2
位数字
24
时制的小时(前面不补
0
):
15
2
位数字
12
时制的小时(前面不补
0
):
3
2
位数字的分钟(不足
2
位前面补
0
):
24
2
位数字的秒(不足
2
位前面补
0
):
56
3
位数字的毫秒(不足
3
位前面补
0
):
828
9
位数字的毫秒数(不足
9
位前面补
0
):
828000000
小写字母的上午或下午标记(英):pm
小写字母的上午或下午标记(中):下午
相对于GMT的RFC822时区的偏移量:+
0800
时区缩写字符串:CST
1970
-
1
-
1
00
:
00
:
00
到现在所经过的秒数:
1193556296
1970
-
1
-
1
00
:
00
:
00
到现在所经过的毫秒数:
1193556296828
|