SimpleDateFormat.getInstance 格式化

2018-05-27  本文已影响0人  代瑶

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


image.png

让我们尽量使用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

上一篇 下一篇

猜你喜欢

热点阅读