public abstract class Format 类定义了编程接口,用于将语言环境敏感的对象格式化为String(使用format方法)和将String重新解析为对象(使用parseObject方法)。它有直接已知子类:DateFormat,MessageFormat,NumberFormat
一、格式化十进制数 java.text.DecimalFormat
java.lang.Object
java.text.Format
java.text.NumberFormat
java.text.DecimalFormat
DecimalFormat 类主要靠 "#"和 "0" 两种占位符号来指定数字长度。"0" 表示如果位数不足则以"0"填充,"#" 表示只要有可能就把数字拉上这个位置(只是表示格式)。DecimalFormat
使用 half-even 舍入(请参阅 ROUND_HALF_EVEN
)进行格式化。
BigDecimal.ROUND_HALF_EVEN
:向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。
package newTest;
import java.text.DecimalFormat;
public class TestBigDecimal {
public static void main(String args[]) {
double pi = 3.1415927;
// 取一位整数
System.out.println(new DecimalFormat("00").format(pi));// 03
// 取一位整数和两位小数
System.out.println(new DecimalFormat("0.00").format(pi));// 3.14
// 取两位整数和三位小数,整数不足部分以0填补。
System.out.println(new DecimalFormat("00.000").format(pi));// 03.142
// 取所有整数部分
System.out.println(new DecimalFormat("##").format(pi));// 3
// 以百分比方式计数,并取两位小数
System.out.println(new DecimalFormat("#.##%").format(pi));// 314.16%
long c = 299792458;
// 显示为科学计数法,并取五位小数
System.out.println(new DecimalFormat("#.#####E0").format(c));// 2.99792E8
// 显示为两位整数的科学计数法,并取四位小数
System.out.println(new DecimalFormat("00.####E0").format(c));// 29.9792E7
// 每三位以逗号进行分隔。
System.out.println(new DecimalFormat(",###").format(c));// 299,792,458
// 将格式嵌入文本
System.out.println(new DecimalFormat("光速大小为每秒,###米。").format(c));
}
}
二、格式化日期 java.text.SimpleDateFormat 具体的格式化字母请参照java API
java.lang.Object
java.text.Format
java.text.DateFormat
java.text.SimpleDateFormat
比较常用的是new SimpleDateFormat("yyyy-MM-dd").format(new Date());
package newTest;
import java.util.Date;
import java.text.DateFormat;
/**
* 格式化时间类
* DateFormat.FULL = 0
* DateFormat.DEFAULT = 2
* DateFormat.LONG = 1
* DateFormat.MEDIUM = 2
* DateFormat.SHORT = 3
*/
public class TestDateFormat{
public static void main(String []args){
Date date = new Date();
String formatStr;
/** Date类的格式: Sat Apr 16 13:17:29 CST 2006 */
System.out.println(date);
System.out.println("******************************************");
/** getDateInstance() */
/** 输出格式: 2006-4-16 */
formatStr = DateFormat.getDateInstance().format(date);
System.out.println(formatStr);
/** 输出格式: 2006-4-16 */
formatStr = DateFormat.getDateInstance(DateFormat.DEFAULT).format(date);
System.out.println(formatStr);
/** 输出格式: 2006年4月16日 星期六 */
formatStr = DateFormat.getDateInstance(DateFormat.FULL).format(date);
System.out.println(formatStr);
/** 输出格式: 2006-4-16 */
formatStr = DateFormat.getDateInstance(DateFormat.MEDIUM).format(date);
System.out.println(formatStr);
/** 输出格式: 06-4-16 */
formatStr = DateFormat.getDateInstance(DateFormat.SHORT).format(date);
System.out.println(formatStr);
/** 输出格式: 2006-01-01 00:00:00 */
java.text.DateFormat format1 = new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
formatStr = format1.format(new Date());
System.out.println(formatStr);
/** 输出格式: 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");
formatStr = format2.format(new Date());
System.out.println(formatStr);
}
}