Java数字日期时间格式化处理

包含数字格式化DecimalFormat。日期时间格式化String.format()、SimpleDateFormat

1、十进制数字格式化

使用DecimalFormat类(十进制数格式化)格式化数字,使用。DecimalFormat是NumberFormat的一个子类,用于格式化十进制数字。它将一些数字格式化为整数、浮点数、科学计数法、百分数等。通过使用该类可以为要输出的数字加上单位或控制数字的精度。一般情况可以在实例化DecimalFormat对象时传递数字格式(API中不推荐),也可以通过DecimalFormat类中的applyPattern()方法来实现数字格式化。继承关系如下:

java.lang.Object

|-- java.text.Format

|-- java.text.NumberFormat //抽象类

|-- java.text.DecimalFormat

格式化符号参数如下:

0

一个数字 

#

一个数字,不包括 0

.

小数的分隔符的占位符 

,

分组分隔符的占位符 

;

分隔格式。 

-

缺省负数前缀。 

%

乘以 100 和作为百分比显示 

?

乘以 1000 和作为千进制货币符显示;用货币符号代替;如果双写,用 国际货币符号代替。如果出现在一个模式中,用货币十进制分隔符代 替十进制分隔符。

 前缀或后缀中使用的任何其它字符,用来引用前缀或后缀中的特殊字符

以下是JDK1.7 API中全部替代符:

测试代码如下:

DecimalFormat df1 = new DecimalFormat("0.0");//00.0或.0使用一样
DecimalFormat df2 = new DecimalFormat("#.#");
DecimalFormat df3 = new DecimalFormat("0000.0000");//不足位自动补0
DecimalFormat df4 = new DecimalFormat("###.#####");//不足位不显示
//df1.applyPattern("#.##");//此方法改变格式
System.out.println(df1.format(012.345));//输出12.3
System.out.println(df2.format(012.345)); //输出12.3
System.out.println(df3.format(012.345)); //输出0012.3450
System.out.println(df4.format(012.0345)); //输出12.0345

注意:DecimalFormat 通常不是同步的。建议为每个线程创建独立的格式实例。如果多个线程同时访问某个格式,则必须保持外部同步。

本文简单数字格式化使用,深入了解和具体方法详细使用参见API文档。

2、日期时间格式化

2.1使用String.format()方法,

方法讲解:(多个参数对应format字符串中可能有多个格式化转换符,类似C语言)

Java数字日期时间格式化处理_第1张图片

1)下面是使用format的日期格式化

Java数字日期时间格式化处理_第2张图片

代码实例:

Date today=new Date();
System.out.println(String.format(Locale.US,"%tb", today));
System.out.println(String.format(Locale.US,"%tB", today));
System.out.println(String.format("%ta", today));
System.out.println(String.format("%tA", today));
System.out.println(String.format("%tY", today));
System.out.println(String.format("%ty", today));
System.out.println(String.format("%tm", today));
System.out.println(String.format("%td", today));
System.out.println(String.format("这里可以添加文字,C语言printf格式化相似:%te", today));
System.out.println(String.format("可以多个格式化:%tY-%tm-%te", today, today, today));
输出结果如下:

Feb
February
星期四
星期四
2016
16
02
04
这里可以添加文字,C语言printf格式化相似:4
可以多个格式化:2016-02-4

2)下面是使用format的时间格式化

使用format()方法对时间格式化时,用到时间格式化转换符。常用时间格式化转换符如表所示:

Java数字日期时间格式化处理_第3张图片

代码实例如下:

Date today=new Date();
System.out.println(String.format("%tH", today));
System.out.println(String.format("%tI", today));
System.out.println(String.format("%tk", today));
System.out.println(String.format("%tl", today));
System.out.println(String.format("%tM", today));
System.out.println(String.format("%tS", today));
System.out.println(String.format("%tZ", today));
System.out.println(String.format("%tp", today));
System.out.println(String.format("可以多个格式化:%tY-%tm-%te %tH:%tM:%tS", today, today, today, today, today, today));
输出结果:

13
01
13
1
22
18
CST
下午
可以多个格式化:2016-02-4 13:22:18

2.2使用java.text.SimpleDateFormat类,

使用SimpleDateFormat类,格式化时间。常用的实例化使用如下

SimpleDateFormat sFormat = new SimpleDateFormat(String pattern);

或者

SimpleDateFormat sFormat = new SimpleDateFormat();

sFormat.applyPattern(String pattern);

或者

DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL,Locale.getDefault());

//具体可取DateFormat.SHORT,DEFAULT,LONG,FULL

格式化字符如下:

Java数字日期时间格式化处理_第4张图片

示例:

Java数字日期时间格式化处理_第5张图片

获取日期类处理的方法如下:(具体参见API,时间使用中有许多方法已被弃用,需注意)

Calendar c = Calendar.getInstance();

c.setTime(Date date);

时间格式化示例代码如下:

Calendar c1=Calendar.getInstance();
c1.setTime(new Date());
//Calendar c2 = Calendar.getInstance();
////当Calendar中设置的时间超过每项的最大值时,会以减去最大值后的值设置时间,例如月份设置13,最后会变成13-11=02
//c2.set(1920, 13, 24, 22, 32, 22);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat format2 = new SimpleDateFormat("yy-MM-dd H:m:s");
SimpleDateFormat format3 = new SimpleDateFormat("y-M-d H:m:s");
System.out.println(format.format(c1.getTime()));
System.out.println(format2.format(c1.getTime()));
System.out.println(format3.format(c1.getTime()));

输出结果如下:

2016-02-04 14:19:54

16-02-04 14:19:54

2016-2-4 14:19:54









你可能感兴趣的:(java)