java常用的格式化

日常工作中,总会遇到一些格式化显示的需求,下面做一些简单的整理

JDK中java.text下提供了格式化常用的工具类,具体结构见下图

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

时间日期格式化

DateFormat

采用DateFormat.get%Instance()方法进行实例化,提供format()进行格式化,可以讲Date和String两种类型的日期时间进行互转

例如

    DateFormat.getInstance().format(Calender.getInstance().getTime());

这种方法可以获得当前时间的格式化,但是并未制定格式。DateFormat方法并不提供自定义格式。因此SimpleDateFormat是一种较好的选择

SimpleDateFormat

采用new的方式实例化,可以自定义格式化格式。

例如

		String model = "yyyy/MM/dd hh:mm:ss";
		sdf = new SimpleDateFormat(model);
		Date date = Calendar.getInstance().getTime();
		System.out.println(sdf.format(date));

常用的格式化字符

G:AD / BD

y:year

M:month

d:day

h/H:hour  12小时制/24小时制

m:minites

s:second

S:s/1000

数字格式化

NumberFormat

     NuberFormat采用getXXXInstance获取格式化实例,可以 自动添加千分符,百分号,金额等格式化

     getInstance() 返回当前默认语言环境的通用数值格式

     getIntegerInstance() 返回当前默认语言环境的整数格式

     getMaximumFractionDigits()返回数的小数部分所允许的最大位数

     getCurrencyInstance() 返回当前默认语言环境的货币格式

     NumberFormat不能自己指定格式化格式,可以使用它的子类进行实现。

DecimalFormat

     使用方法

            new DecimalFormat(pattern).format(123456.789);

           重点pattern的用法,如何定义一个pattern.

                 #代表数字

                 .代表小数点

                 ,分隔符

                 %百分号

                 \u2030千分符(键盘上无法直接打出)

                 E科学计数法

      简单列举一些常用的pattern

      千分符分割数字(Ps:千分符小数位不需要分割即123,456.0123456)#,###.##### 小数点后需要保留多少位看需要,对于0.12和12.0会显示成.12和12.。

      改进的千分符分割数字:#,##0.0###

      科学计数法:0.0##E0

      格式化百分比:#,###.00%

      格式化千分比:#,###.00\u2030      

ChoiceFormat

      使用方法:

             double[] limits = {0,1,2,3};//限制条件

             String[] formats = {"0~1","1~2","2~3","3~"}//格式化输出的结果;限制条件和格式化结果数量必须一致

             ChoiceFormat cf = new ChoiceFormat(limits,formats);

             cf.format(1.2);

     注意:limits顺序无所谓,ChoiceFormat使用之前会进行排序

                实现的功能类似if else,以上述limits为例,比较条件为0<=x<1,1<=x<2,2<=x<3,3<=x 然后在对应到formats对应位置的格式化输出位置的值

                可以理解成这个样子

		double x = 1.2;
		String format ;
		if(0<=x && x<1)
			format = "0~1";
		else if(1<=x && x<2)
			format = "1~2";
		else if(2<=x && x<3)
			format = "2~3";
		else if(3<=x)
			format = "3~";


 

消息格式化

MessageFormat

    作用:类似Log4J那种输出,自定义一些标准化输出信息,然后按照定义的规则输出内容.

    用法:MessageFormat.format("logger {0,date} {0,time}:Hello {1},This {2} ", new Date(),"Tom","HanMeiMei");

 

posted @ 2014-04-20 20:31  汤姆的猫  阅读(577)  评论(0编辑  收藏  举报