【概述】
当需要对时间、日期、数字进行格式化时,可采用 java.lang 包下的 Formatter 类中的 format() 方法,该方法在 String 类中被重写。
【format()方法定义】
String 类中的 format() 方法有两种重载格式,其定义如下:
public static String format(String fomat,Object obj)
public static String format(Locale locale,String fomat,Object obj)
参数 format 为要获取字符串的格式;参数 obj 为要进行格式化的对象;参数 locale 为格式化字符串时依据的语言环境,当 locale 缺失时,将依据本地的语言环境进行格式化。
【格式化模式】
格式化模式是 format() 方法中的一个使用双引号括起来的字符序列,该字符序列由格式符与普通字符组成,在定义格式化字符串采用的格式时,采用如下的格式化字符串转换符形式
转换符 | 功能说明 |
%s | 格式化为字符串表示 |
%c | 格式化为字符型表示 |
%b | 格式化为布尔型表示 |
%d | 格式化为十进制整数表示 |
%o | 格式化为八进制整数表示 |
%x | 格式化为小写的十六进制整数表示 |
%X | 格式化为大写的十六进制整数表示 |
%f | 格式化为十进制浮点型表示 |
%a | 格式化为十六进制浮点型表示 |
%e | 格式化为指数形式表示 |
%g | 格式化为通用浮点型表示( f 和 e 类型中较短的) |
%h | 格式化为散列码形式表示 |
%% | 格式化为百分比形式表示 |
%tx | 格式化为日期和时间形式表示(x 代表不同的日期与时间转换符) |
%n | 换行符 |
【值列表】
值列表是使用逗号分隔的变量、常量或表达式,需要保证格式化模式中格式符的个数与值列表中列出的值的个数相同。
String str=String.format("%d元%d箱%.3f斤",100,1,45.5);
//结果:100元1箱45.5斤
【整数的格式化】
%d、%o、%x、%X 可格式化 byte、Byte、short、Short、int、Integer、long、Long 型数据
1)修饰符
" + " 修饰符:格式化正整数时,强制添上正号
" , " 修饰符:格式化整数时,按 “ 千 ” 分组
String str=String.format("%,d",12345);//结果为:12,345
String str=String.format("%+,d",12345);//结果为:+12,345
2)数据宽度
数据宽度是 format() 方法返回字符串的长度,当实际数据的宽度大于格式指定宽度时,按数据实际宽度进行格式化。
格式有:
%md:在数据左端增加空格
%-md:在数据右端增加空格
String str=String.format("%6d",123);//结果为: 123
String str=String.format("%-6d%d",123,456);//结果为:123 456
【浮点数的格式化】
%f、%e、%g、%a 可格式化 float、Float、double、Double 型数据
1)修饰符
" + " 修饰符:格式化正数时,强制添上正号
" , " 修饰符:格式化浮点数时,按 “ 千 ” 分组
String str=String.format("%,d",1234.56);//结果为:1,234.5
String str=String.format("%+,d",1234.56);//结果为:+1,234.5
2)数据宽度
数据宽度是 format() 方法返回字符串的长度,当实际数据的宽度大于格式指定宽度时,按数据实际宽度进行格式化。格式有:
格式有:
%mf:在数据左端增加空格
%-mf:在数据右端增加空格
String str=String.format("%6d",123);//结果为: 123
String str=String.format("%-6d%d",123,456);//结果为:123 456
%.nf 可以限制小数的位数,其中 n 是保留小数的位数。
String str=String.format("%.3f",123.4567);//结果为:123.456
【日期与时间的格式化】
当需要对日期、时间进行格式化处理时,使用参数 %tx,x 代表不同的日期与时间转换符。
Date date=new Date();
String a=String.format(Locale.US,"%tb",date);//结果为:Jan
1.常用日期与时间的格式化
转换符 | 格式说明 | 格式示例 |
F | 格式化为:YYYY-MM-DD | 2018-10-1 |
D | 格式化为:MM/DD/YY | 01/10/18 |
r | 格式化为:HH:MM:SS AM(12小时值) | 03:06:52 下午 |
T | 格式化为:HH:MM:SS(24小时值) | 15:06:52 |
R | 格式化为:HH:MM(24小时值) | 15:06 |
2.日期的格式化
转换符 | 格式说明 | 格式示例 |
b或h | 获取月份的简称 | 中:一月;英:Jan |
B | 获取月份的全称 | 中:一月;英:January |
a | 获取星期的简称 | 中:星期六;英:Sat |
A |
获取星期的全称 | 中:星期六;英:Saturday |
Y | 获取年(不足4位前面补0) | 2008 |
y | 获取年的后两位(不足2位前面补0) | 08 |
C | 获取年的前两位(不足2位前面补0) | 20 |
m | 获取月(不足2位前面补0) | 06 |
d | 获取日(不足2位前面补0) | 06 |
e | 获取日(不足2位前面补0) | 06 |
j | 获取是一年的第多少天(不足3位前面补0) | 006 |
3.时间的格式化
转换符 | 格式说明 | 格式示例 |
H | 获取24小时制的小时(不足2位前面补0) | 15 |
k | 获取24小时制的小时(不足2位前面不补0) | 15 |
I(大写 i) | 获取12小时制的小时(不足2位前面补0) | 03 |
l(小写 L) |
获取12小时制的小时(不足2位前面不补0) | 3 |
M | 获取分钟(不足2位前面补0) | 06 |
S | 获取秒(不足2位前面补0) | 08 |
L | 获取3位的毫秒(不足3位前面补0) | 020 |
N | 获取9位的毫秒(不足9位前面补0) | 000123456 |
p | 显示上下午标记 | 中:下午;英:pm |