格式化————format

1. 字符串:String.format

String.format(Locale locale,String format,Object…args)
locale:指定语言环境(选填
format:格式化语句
args:被格式化的参数

占位转换符释义示例
%s字符串类型“sdsd”
%c字符类型‘s’
%b布尔类型true
%d整数(十进制)12
%x整数(十六进制),对应十进制的值c
%o整数(八进制),对应十进制的值14
%f浮点型,显示9位有效数字,且会进行四舍五入0.2
%a十六进制浮点型, 0.2对应得值0x1.9ap-3
%e指数类型 ,0.2对应得值2e-01
%%百分比10%
%n换行符
%tx日期时间,参数x:日期的格式

数字

        System.out.println(String.format("整数:%d,十六进制:%x,八进制:%o", 12,12,12));
        //输出:整数:12,十六进制:c,八进制:14
        System.out.println(String.format("小数:%.2f,十六进制:%.2a,指数:%e",0.2,0.2,0.02));
        //输出:小数:0.20,十六进制:0x1.9ap-3,指数:2.000000e-01  保留2位小数%.2f

数字对应得转换符标志

标志说明示例结果
+给正数添加+符号,负数不添加(“%+d”,5)+5
-左对齐(“!%-3d!”,5)!5 !
0数字前不够补0(“%03,5”)005
空格添加空格(“!%3d!”,5)! 5!
,对数字分组(“%,d”,1111)1,111
(用括号包含负数,正数无效(“%(d”,-5)(5)
#给八进制(0)和十六进制(0x)添加前缀
<格式化前一个转换符对应得参数(“%.2f和%<.1f”,0.111)0.11和0.1
$被格式化的参数索引("%2$d",1,4)4

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

转换符说明示例
c包括全部日期和时间信息星期三 十二月 19 14:21:20 CST 2018
F“年-月-日”格式2018-12-19
D“月/日/年”格式18/12/19
r“HH:MM:SS PM”格式(12时制)02:25:51 下午
T“HH:MM:SS”格式(24时制)14:28:16
R“HH:MM”格式(24时制)14:28
b或者h月份简称中:十二月英:Dec
B月份全称中:十二月英:December
a星期的简称中:星期三英:Wed
A星期的全称中:星期三六英:Wednesday
C年的前两位数字(不足两位前面补0)20
y年的后两位数字(不足两位前面补0)12
Y4位数字的年份(不足4位前面补0)2018
j一年中的天数(即年的第几天)353
m两位数字的月份(不足两位前面补0)12
d两位数字的日(不足两位前面补0)19
e月份的日(前面不补0)19
System.out.println(String.format("%tF",new Date()));//输出2018-12-19

2. 日期:DateFormat

DateFormat

//DateFormat
	Date d=new Date();
	DateFormat df=DateFormat.getDateInstance();
	String str=df.format(d);//格式YYYY-MM-dd

getDateInstance()—YYYY-MM-dd
getDateTimeInstance—YYYY-MM-dd HH:mm:ss
getTimeInstance—hh:mm:ss
getInstance—YY-MM-dd 下午/上午hh:mm

SimpleDateFormat

//SimpleDateFormat
	Date d=new Date();
	SimpleDateFormat sdf=new SimpleDateFormat("今天是yyyy-MM-dd hh:mm:ss");//默认中文添加参数Locale.ENGLISH英文显示
	String str=sdf.format(d);
字母日期或时间示例
yyyyy/2018,yy/18
MMM/08,M/8
w年中的第几周w/52,ww/04
W月中的第几周W/3,WW/04
D年中的第几天324
d月中的第几天dd/04
E星期几星期一/Mon
aAM/PM标记下午/PM,上午/AM
H小时(0~23)HH/08
h小时(1~12)hh/09
m分钟mm/04
sss/05
S毫秒s/435

3. 数字

NumberFormat

//NumberFormat
NumberFormat f=NumberFormat.getCurrencyInstance();//添加参数Locale对象指定语言环境
String str=f.format(2323.325);//¥2,323.32,小数点2位之后的五舍四入

getCurrencyInstance()–根据当前语言环境获取货币格式,可通过Locale对象为参数设置语言环境
getInstance()/getNumberInstance()–获取常规数值格式
getIntegerInstance()–整数格式,小数四舍五入
getPercentInstance()–获取百分比格式,小数点2位之后的五舍六入0.585–58%

DecimalFormat

        //DecimalFormat
        DecimalFormat df=new DecimalFormat();//默认显示3位小数四舍五入
        
        System.out.println(df.format(2018.3454));//输出:2,018.345
        
        df.setMaximumFractionDigits(4);//设置小数位最大位数
        System.out.println(df.format(2018.3454));//输出:2,018.3454
        
        df.setMinimumFractionDigits(2);//设置小数位最小位数不够补0
        System.out.println(df.format(2018.1));//输出:2,018.10
        
        df.setMaximumIntegerDigits(4);//设置整数最大位数
        System.out.println(df.format(12018.1));//输出:2018.10
        
        df.setMinimumIntegerDigits(3);//设置整数最小位数不足补0
        System.out.println(df.format(20));//输出:020.00
        
        df.setGroupingUsed(false);//设置是否分组false不分组,默认为true
        System.out.println(df.format(2018.1));//输出:2018.10

元素所对应得释义
0表示一个数字,不够补0
#表示一个数字,不够忽略
.小数点分隔占位符
分组分隔占位符
-缺省负数前缀
%值乘以100并显示为百分数
\u2030值乘以1000并显示为千分数
        DecimalFormat df=new DecimalFormat("00,000.###");
        System.out.println(df.format(111.03));//输出:00,111.03
        
        DecimalFormat df1=new DecimalFormat("#%");
        System.out.println(df1.format(1.12));//输出:112%
        
        DecimalFormat df2=new DecimalFormat("#\u2030");
        System.out.println(df2.format(1.12));//输出:1120‰

ChoiceFormat–格式化复数

 //格式化一个数组中的数字,构造参数为(double[] limits,String[] formats)
        double[] limits={1,2,3,4,5,6,7};//必须为升序排列且为double数组
        String[] formats={"Mon","Tue","Web","Thur","Fri","Sat","Sun"};//和limits一一对应
        ChoiceFormat cf=new ChoiceFormat(limits,formats);
        System.out.println(cf.format(0.4));//输出:Mon,没有比1更小的值选择1对应得星期
        System.out.println(cf.format(2.4));//输出:Tue,有比2.4小的数选择2对应得星期
        System.out.println(cf.format(2.7));//输出:Tue
        System.out.println(cf.format(8));//输出:Sun
//参数为一个模式字符串 doubleNum [占位符] formatStr
        //占位符#、< 、\u2264(<=)
        ChoiceFormat cf=new ChoiceFormat("1 # one | 2 < two | 4 \u2264 three");
        //doubleNum必需为升序,分隔符为‘|’
        System.out.println(cf.format(0));//输出:one 最接近1,满足第一个公式
        System.out.println(cf.format(1));//输出:one 小于2,满足第一个公式
        System.out.println(cf.format(2));//输出:one 小于2,满足第一个公式
        System.out.println(cf.format(3));//输出:two 大于2,满足第二个公式
        System.out.println(cf.format(4));//输出:three 等于4,满足第三个公式
        System.out.println(cf.format(5));//输出:three 大于4,满足第三个公式

MessageFormate

int num=4;
String str="串";
String result= MessageFormat.//{index,type} type:time-时间(时分秒),date-日期(年月日),number-数字
        format("开始{0,time} to {0,date}, {1} on 数字 {2,number}", new Date(),str,num);
System.out.println(result);//输出开始14:54:50 to 2018-12-19, 串 on 数字 4
//详情:http://www.cnblogs.com/fsjohnhuang/p/4095059.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值