SimpleDateFormat.getInstance 格式化
以前一直使用的new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 但是会发现有提示,提示图如下

让我们尽量使用getInstance等静态方法,下面方法都返回DateFormat 方法
final static DateFormat getInstance() //默认为时间和日期
final static DateFormat getTimeInstance() //调用显示时间
final static DateFormat getTimeInstance(int style)
final static DateFormat getTimeInstance(int style, Locale locale)
final static DateFormat getDateInstance() //调用显示日期
final static DateFormat getDateInstance(int style)
final static DateFormat getDateInstance(int style, Locale locale)
final static DateFormat getDateTimeInstance() //调用显示时间和日期
final static DateFormat getDateTimeInstance(int dateStyle, int timeStyle)
final static DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale locale)
我们看到参数style提供有
public static final int FULL = 0;
public static final int LONG = 1;
public static final int MEDIUM = 2;
public static final int SHORT = 3;
下面我们写一个测试类
package com.umity;
import java.util.Date;
import java.util.Locale;
import java.text.DateFormat;
import java.text.FieldPosition;
/**
* DateFormat 的API测试程序
*/
public class DateFormatTest {
public static void main(String[] args) {
// 只显示“时间”:调用getTimeInstance()函数
testGetTimeInstance() ;
// 只显示“日期”:调用getDateInstance()函数
testGetDateInstance() ;
// 显示“日期”+“时间”:调用getDateTimeInstance()函数
testGetDateTimeInstance() ;
// 测试format()函数
testFormat();
}
/**
* 测试DateFormat的getTimeInstance()函数
* 它共有3种重载形式:
* (01) getTimeInstance()
* (02) getTimeInstance(int style)
* (03) getTimeInstance(int style, Locale locale)
*
* @author skywang
*/
private static void testGetTimeInstance() {
Date date = new Date();
//Locale locale = new Locale("fr", "FR");
Locale locale = new Locale("zh", "CN");
// 等价于 DateFormat.getTimeInstance( DateFormat.MEDIUM);
DateFormat short0 = DateFormat.getTimeInstance( );
// 参数是:“时间的显示样式”
DateFormat short1 = DateFormat.getTimeInstance( DateFormat.SHORT);
DateFormat medium1 = DateFormat.getTimeInstance( DateFormat.MEDIUM);
DateFormat long1 = DateFormat.getTimeInstance( DateFormat.LONG);
DateFormat full1 = DateFormat.getTimeInstance( DateFormat.FULL);
// 参数是:“时间的显示样式” 和 “地区”
DateFormat short2 = DateFormat.getTimeInstance( DateFormat.SHORT, locale);
DateFormat medium2 = DateFormat.getTimeInstance( DateFormat.MEDIUM, locale);
DateFormat long2 = DateFormat.getTimeInstance( DateFormat.LONG, locale);
DateFormat full2 = DateFormat.getTimeInstance( DateFormat.FULL, locale);
System.out.println("\n----getTimeInstance ----\n"
+ "(1.0) Empty Param : " + short0.format(date) +"\n"
+ "(2.1) One Param(s) : " + short1.format(date) +"\n"
+ "(2.2) One Param(m) : " + medium1.format(date) +"\n"
+ "(2.3) One Param(l) : " + long1.format(date) +"\n"
+ "(2.4) One Param(f) : " + full1.format(date) +"\n"
+ "(3.1) One Param(s,l): " + short2.format(date) +"\n"
+ "(3.2) One Param(m,l): " + medium2.format(date) +"\n"
+ "(3.3) One Param(l,l): " + long2.format(date) +"\n"
+ "(3.4) One Param(f,l): " + full2.format(date) +"\n"
);
}
/**
* 测试DateFormat的getDateTimeInstance()函数
* 它共有3种重载形式:
* (01) getDateInstance()
* (02) getDateInstance(int style)
* (03) getDateInstance(int style, Locale locale)
*/
public static void testGetDateTimeInstance() {
Date date = new Date();
Locale locale = new Locale("zh", "CN");
// 等价于 DateFormat.getDateTimeInstance( DateFormat.MEDIUM);
DateFormat short0 = DateFormat.getDateTimeInstance( );
DateFormat short1 = DateFormat.getDateTimeInstance( DateFormat.SHORT, DateFormat.SHORT);
DateFormat medium1 = DateFormat.getDateTimeInstance( DateFormat.MEDIUM, DateFormat.MEDIUM);
DateFormat long1 = DateFormat.getDateTimeInstance( DateFormat.LONG, DateFormat.LONG);
DateFormat full1 = DateFormat.getDateTimeInstance( DateFormat.FULL, DateFormat.FULL);
DateFormat short2 = DateFormat.getDateTimeInstance( DateFormat.SHORT, DateFormat.SHORT, locale);
DateFormat medium2 = DateFormat.getDateTimeInstance( DateFormat.MEDIUM, DateFormat.MEDIUM, locale);
DateFormat long2 = DateFormat.getDateTimeInstance( DateFormat.LONG, DateFormat.LONG, locale);
DateFormat full2 = DateFormat.getDateTimeInstance( DateFormat.FULL, DateFormat.FULL, locale);
System.out.println("\n----getDateTimeInstance ----\n"
+ "(1.0) Empty Param : " + short0.format(date) +"\n"
+ "(2.1) One Param(s) : " + short1.format(date) +"\n"
+ "(2.2) One Param(m) : " + medium1.format(date) +"\n"
+ "(2.3) One Param(l) : " + long1.format(date) +"\n"
+ "(2.4) One Param(f) : " + full1.format(date) +"\n"
+ "(3.1) One Param(s,l): " + short2.format(date) +"\n"
+ "(3.2) One Param(m,l): " + medium2.format(date) +"\n"
+ "(3.3) One Param(l,l): " + long2.format(date) +"\n"
+ "(3.4) One Param(f,l): " + full2.format(date) +"\n"
);
}
/**
* 测试DateFormat的getDateInstance()函数
* 它共有3种重载形式:
* (01) getDateTimeInstance()
* (02) getDateTimeInstance(int dateStyle, int timeStyle)
* (03) getDateTimeInstance(int dateStyle, int timeStyle, Locale locale)
*/
public static void testGetDateInstance() {
Date date = new Date();
//Locale locale = new Locale("en", "US");
Locale locale = new Locale("zh", "CN");
// 等价于 DateFormat.getDateInstance( DateFormat.MEDIUM);
DateFormat short0 = DateFormat.getDateInstance( );
DateFormat short1 = DateFormat.getDateInstance( DateFormat.SHORT);
DateFormat medium1 = DateFormat.getDateInstance( DateFormat.MEDIUM);
DateFormat long1 = DateFormat.getDateInstance( DateFormat.LONG);
DateFormat full1 = DateFormat.getDateInstance( DateFormat.FULL);
DateFormat short2 = DateFormat.getDateInstance( DateFormat.SHORT, locale);
DateFormat medium2 = DateFormat.getDateInstance( DateFormat.MEDIUM, locale);
DateFormat long2 = DateFormat.getDateInstance( DateFormat.LONG, locale);
DateFormat full2 = DateFormat.getDateInstance( DateFormat.FULL, locale);
System.out.println("\n----getDateInstance ----\n"
+ "(1.0) Empty Param : " + short0.format(date) +"\n"
+ "(2.1) One Param(s) : " + short1.format(date) +"\n"
+ "(2.2) One Param(m) : " + medium1.format(date) +"\n"
+ "(2.3) One Param(l) : " + long1.format(date) +"\n"
+ "(2.4) One Param(f) : " + full1.format(date) +"\n"
+ "(3.1) One Param(s,l): " + short2.format(date) +"\n"
+ "(3.2) One Param(m,l): " + medium2.format(date) +"\n"
+ "(3.3) One Param(l,l): " + long2.format(date) +"\n"
+ "(3.4) One Param(f,l): " + full2.format(date) +"\n"
);
}
/**
* 测试DateFormat的format()函数
*/
public static void testFormat() {
Date date = new Date();
StringBuffer sb = new StringBuffer();
FieldPosition field = new FieldPosition(DateFormat.YEAR_FIELD);
DateFormat format = DateFormat.getDateTimeInstance();
sb = format.format(date, sb, field);
System.out.println("\ntestFormat");
System.out.printf("sb=%s\n", sb);
}
}
运行结果
----getTimeInstance ----
(1.0) Empty Param : 10:34:33
(2.1) One Param(s) : 上午10:34
(2.2) One Param(m) : 10:34:33
(2.3) One Param(l) : 上午10时34分33秒
(2.4) One Param(f) : 上午10时34分33秒 CST
(3.1) One Param(s,l): 上午10:34
(3.2) One Param(m,l): 10:34:33
(3.3) One Param(l,l): 上午10时34分33秒
(3.4) One Param(f,l): 上午10时34分33秒 CST
----getDateInstance ----
(1.0) Empty Param : 2018-5-27
(2.1) One Param(s) : 18-5-27
(2.2) One Param(m) : 2018-5-27
(2.3) One Param(l) : 2018年5月27日
(2.4) One Param(f) : 2018年5月27日 星期日
(3.1) One Param(s,l): 18-5-27
(3.2) One Param(m,l): 2018-5-27
(3.3) One Param(l,l): 2018年5月27日
(3.4) One Param(f,l): 2018年5月27日 星期日
----getDateTimeInstance ----
(1.0) Empty Param : 2018-5-27 10:34:33
(2.1) One Param(s) : 18-5-27 上午10:34
(2.2) One Param(m) : 2018-5-27 10:34:33
(2.3) One Param(l) : 2018年5月27日 上午10时34分33秒
(2.4) One Param(f) : 2018年5月27日 星期日 上午10时34分33秒 CST
(3.1) One Param(s,l): 18-5-27 上午10:34
(3.2) One Param(m,l): 2018-5-27 10:34:33
(3.3) One Param(l,l): 2018年5月27日 上午10时34分33秒
(3.4) One Param(f,l): 2018年5月27日 星期日 上午10时34分33秒 CST
testFormat
sb=2018-5-27 10:34:33