在Java中可以使用 DecimalFormat,DateFormat,SimpleDateFormat来实现数字和日期的格式化
一、数字格式化
DecimalFormat 是 NumberFormat (抽象类)的具体子类,用于格式化十进制数字,DecimalFormat 包含一个模式 和一组符号。符号含义如下:
0 一个数字
# 一个数字,不包括 0
. 小数的分隔符的占位符
, 分组分隔符的占位符
; 分隔格式。
- 缺省负数前缀。
% 乘以 100 和作为百分比显示
X 前缀或后缀中使用的任何其它字符,用来引用前缀或后缀中的特殊字符。
二、日期格式化
SimpleDateFormat是DateFormat的子类,都可以实现日期的格式化。
/*数字格式化*/
DecimalFormat df = new DecimalFormat();
double data = 12.3456789;
String style = "";
System.out.println("格式化之前的数字: " + data);
/*输出格式: 12.3*/
style = "0.0";
df.applyPattern(style);
System.out.println(df.format(data));
/* 在格式后添加诸如单位等字符 */
/*输出格式: 00012.346 kg*/
style = "00000.000 kg";
df.applyPattern(style);
System.out.println(df.format(data));
/* 模式中的"#"表示如果该位存在字符,则显示字符,如果不存在,则不显示。 */
/*输出格式: 012.346 kg*/
style = "##000.000 kg";
df.applyPattern(style);
System.out.println(df.format(data));
/*模式中的"-"表示输出为负数,要放在最前面*/
/*输出格式: -012.346*/
style = "-000.000";
df.applyPattern(style);
System.out.println(df.format(data));
/*模式中的","在数字中添加逗号,方便读数字*/
/*输出格式: -0,012.35*/
style = "-0,000.0#";
df.applyPattern(style);
System.out.println(df.format(data));
/*模式中的"E"表示输出为指数,"E"之前的字符串是底数的格式,*/
/*"E"之后的是字符串是指数的格式*/
/*输出格式: 1.23E001*/
style = "0.00E000";
df.applyPattern(style);
System.out.println(df.format(data));
/*模式中的"%"表示乘以100并显示为百分数,要放在最后。*/
/*输出格式: 1234.57%*/
style = "0.00%";
df.applyPattern(style);
System.out.println(df.format(data));
/*模式中的"\u2030"表示乘以1000并显示为千分数,要放在最后。*/
/*输出格式: 12345.68‰*/
style = "0.00\u2030";
DecimalFormat df1 = new DecimalFormat(style);
df.applyPattern(style);
System.out.println(df1.format(data));
/*日期格式化*/
Date d = new Date();
String s;
/* Date类的格式: Sat Apr 16 13:17:29 CST 2006 */
System.out.println(d);
/* getDateInstance() */
/* 输出格式: 2006-4-16 */
s = DateFormat.getDateInstance().format(d);
System.out.println(s);
/* 输出格式: 2006-4-16 */
s = DateFormat.getDateInstance(DateFormat.DEFAULT).format(d);
System.out.println(s);
/* 输出格式: 2006年4月16日 星期六 */
s = DateFormat.getDateInstance(DateFormat.FULL).format(d);
System.out.println(s);
/* 输出格式: 2006-4-16 */
s = DateFormat.getDateInstance(DateFormat.MEDIUM).format(d);
System.out.println(s);
/* 输出格式: 06-4-16 */
s = DateFormat.getDateInstance(DateFormat.SHORT).format(d);
System.out.println(s);
/* 输出格式: 2006-01-01 00:00:00 */
java.text.DateFormat format1 = new java.text.SimpleDateFormat(
"yyyy-MM-dd hh:mm:ss");
s = format1.format(new Date());
System.out.println(s);
/* 输出格式: 2006-01-01 00:00:00 */
System.out.println((new java.text.SimpleDateFormat(
"yyyy-MM-dd hh:mm:ss")).format(new Date()));
/* 输出格式: 20060101000000***/
java.text.DateFormat format2 = new java.text.SimpleDateFormat(
"yyyyMMddhhmmss");
s = format2.format(new Date());
System.out.println(s);
/* 输出格式: 2006-01***/
java.text.DateFormat format3 = new java.text.SimpleDateFormat("yyyy-MM");
s = format3.format(new Date());
System.out.println(s);