格式化日期表示将日期/时间格式转换为预先定义的日期/时间格式。例如将日期“Fri May 18 15:46:24 CST2016” 格式转换为 “2016-5-18 15:46:24 星期五”的格式。
在 Java 中,可以使用 DateFormat 类和 SimpleDateFormat 类来格式化日期,下面详细介绍这两个格式化日期类的使用。
DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期→文本)、解析(文本→日期)和标准化日期。
在创建 DateFormat 对象时不能使用 new 关键字,而应该使用 DateFormat 类中的静态方法 getDateInstance(),示例代码如下:
DateFormat df = DateFormat.getDatelnstance();在创建了一个 DateFormat 对象后,可以调用该对象中的方法来对日期/时间进行格式化。DateFormat 类中常用方法如表 1 所示。
方法描述String format(Date date)将 Date 格式化日期/时间字符串Calendar getCalendar()获取与此日期/时间格式相关联的日历static DateFormat getDateInstance()获取具有默认格式化风格和默认语言环境的日期格式static DateFormat getDateInstance(int style)获取具有指定格式化风格和默认语言环境的日期格式static DateFormat getDateInstance(int style,Locale locale)获取具有指定格式化风格和指定语言环境的日期格式static DateFormat getDateTimeInstance()获取具有默认格式化风格和默认语言环境的日期/时间格式static DateFormat getDateTimeInstance(int dateStyle,int timeStyle)获取具有指定日期/时间格式化风格和默认语言环境的日期/时间格式static DateFormat getDateTimeInstance(int dateStyle,int timeStyle,Locale locale)获取具有指定日期/时间格式化风格和指定语言环境的日期/时间格式static DateFormat getTimeInstance()获取具有默认格式化风格和默认语言环境的时间格式static DateFormat getTimeInstance(int style)获取具有指定格式化风格和默认语言环境的时间格式static DateFormat getTimeInstance(int style,Locale locale)获取具有指定格式化风格和指定语言环境的时间格式void setCalendar(Calendar newCalendar)为此格式设置日历Date parse(String source)将给定的字符串解析成日期/时间格式化样式主要通过 DateFormat 常量设置。将不同的常量传入到表 1 所示的方法中,以控制结果的长度。DateFormat 类的常量如下。
SHORT:完全为数字,如 12.5.10 或 5:30pm。MEDIUM:较长,如 May 10,2016。LONG:更长,如 May 12,2016 或 11:15:32am。FULL:是完全指定,如 Tuesday、May 10、2012 AD 或 11:l5:42am CST。运行该段代码,输出的结果如下:
SHORT:18-10-15 上午9:30 FULL:2018年10月15日 星期一 上午09时30分43秒 CST MEDIUM:2018-10-15 9:30:43 LONG:2018年10月15日 上午09时30分43秒该示例主要介绍了 DateFormat 类中方法与常量的结合使用,通过使用 DateFomat 类可以对日期进行不同风格的格式化。
如果使用 DateFormat 类格式化日期/时间并不能满足要求,那么就需要使用 DateFormat 类的子类——SimpleDateFormat。
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类,它允许进行格式化(日期→文本)、解析(文本→日期)和规范化。SimpleDateFormat 使得可以选择任何用户定义的日期/时间格式的模式。
SimpleDateFormat 自定义格式中常用的字母及含义如表 2 所示。 例 1 编写 Java 程序,使用 SimpleDateFormat 类格式化当前日期并打印,日期格式为“xxxx 年 xx 月 xx 日星期 xxx 点 xx 分 xx 秒”,具体的实现代码如下:
import java.text.SimpleDateFormat; import java.util.Date; public class Test13 { public static void main(String[] args) { Date now = new Date(); // 创建一个Date对象,获取当前时间 // 指定格式化格式 SimpleDateFormat f = new SimpleDateFormat("今天是 " + "yyyy 年 MM 月 dd 日 E HH 点 mm 分 ss 秒"); System.out.println(f.format(now)); // 将当前时间袼式化为指定的格式 } }该程序的运行结果如下:
今天是 2018 年 10 月 15 日 星期一 09 点 26 分 23 秒