设置日期格式将日期/时间格式转换为预定义的日期/时间格式。 例如,将日期“Fri May 18 15:46:24 CST2016”的格式转换为格式“2016-5-18 15:46:24星期五”。
在Java中,可以使用DateFormat类和SimpleDateFormat类来设置日期格式。 接下来,我们将详细介绍这两种格式日期类的使用。
DateFormat类DateFormat是日期/时间格式子类的抽象类,它以与语言无关的方式格式化和解析日期或时间。 日期/时间格式的子类(如SimpleDateFormat )可以设置格式,也就是日期-文本、分析、文本-日期和标准化日期。
创建DateFormat对象时,请不要使用new关键字。 而是使用DateFormat类的静态方法getDateInstance (),如下所示:
date format df=date format.getdatelnstance (;
创建DateFormat对象后,可以调用该对象中的方法设置日期/时间的格式。 DateFormat类中常用的方法如表1所示。
表1 DateFormat类的常用方法是将字符串格式(datedate )为date格式的日期/时间字符串Calendar getCalendar )/与时间格式相关联的日历staticdateformatgetdateinstance )。具有默认格式样式和默认区域设置的日期格式staticdateformatgetdateinstance 具有表达式设置样式和默认区域设置的日期格式staticdateformatgetdateinstance ) intstyle、
Locale locale (获取指定格式样式和指定区域设置的日期格式staticdateformatgetdatetimeinstance )获取默认格式样式和默认区域设置的日期/时间
格式统计数据格式统计数据时间实例(int
dateStyle和int timeStyle具有指定的日期/时间格式样式和默认区域设置
日期/时间格式staticdateformatgetdatetimeinstance (int
dateStyle、int timeStyle和Locale locale具有指定的日期/时间格式样式和指定的区域设置
日期/时间格式staticdateformatgettimeinstance ()具有指定格式样式和默认区域设置的时间格式staticdateformatgettimeinstance (int style ) )
locale locale (voidsetcalendar ) calendarnewcalendar (获取具有指定格式样式和指定区域设置的时间格式)将此格式设置为日历date parse (字符串源),然后单击
格式样式主要由DateFormat常量设置。 为了控制结果的长度,向表1所示的方法传递不同的常数。 DateFormat类的常量如下:
short :完全是数字,例如12.5.10或5:30pm。 medium :像may 10,2016一样长。 长:更长,例如may 12、2016或11:15:32am。 full :完整的指定,例如Tuesday、May 10、2012 AD、11:l5:42am CST。
以下是使用DateFormat类设置期间/时间格式的示例:
//不同格式样式和中国环境的日期date format df1=date format.getdate instance (date format.short,Locale.CHINA ); date format df2=date format.getdate instance (date format.full,Locale.CHINA ); date format df3=date format.getdate instance (date format.medium,Locale.CHINA ); date format df4=date format.getdate instance (date format.long,Locale.CHINA ); //获取不同格式样式和中国环境的时间date format df5=date format.gettime instance (date format.short,Locale.CHINA ); date format df6=date format.gettime instance (date format.full,Locale.CHINA ); date format df7=date format.gettime instance (date format.medium,Locale.CHINA ); date格式df8=date
Format.getTimeInstance(DateFormat.LONG,Locale.CHINA); //将不同格式化风格的日期格式化为日期字符串String date1=df1.format(new Date());String date2=df2.format(new Date());String date3=df3.format(new Date());String date4=df4.format(new Date()); //将不同格式化风格的时间格式化为时间字符串String time1=df5.format(new Date());String time2=df6.format(new Date());String time3=df7.format(new Date());String time4=df8.format(new Date()); //输出日期System.out.println("SHORT:"+date1+" "+time1);System.out.println("FULL:"+date2+" "+time2);System.out.println("MEDIUM:"+date3+" "+time3);System.out.println("LONG:"+date4+" "+time4);
运行该段代码,输出的结果如下:
该示例主要介绍了 DateFormat 类中方法与常量的结合使用,通过使用 DateFomat 类可以对日期进行不同风格的格式化。
如果使用 DateFormat 类格式化日期/时间并不能满足要求,那么就需要使用 DateFormat 类的子类——SimpleDateFormat。
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类,它允许进行格式化(日期→文本)、解析(文本→日期)和规范化。SimpleDateFormat 使得可以选择任何用户定义的日期/时间格式的模式。
SimpleDateFormat 类主要有如下 3 种构造方法。
SimpleDateFormat 自定义格式中常用的字母及含义如表 2 所示。
使用 yyyy 表示的年份,如 2011M月份。一般用 MM 表示月份,如果使用 MMM,则会
根据语言环境显示不同语言的月份使用 MM 表示的月份,如 05;
使用 MMM 表示月份,在 Locale.CHINA
语言环境下,如“十月”;在 Locale.US
语言环境下,如 Octd月份中的天数。一般用 dd 表示天数使用 dd 表示的天数,如 10D年份中的天数。表示当天是当年的第几天, 用 D 表示使用 D 表示的年份中的天数,如 295E星期几。用 E 表示,会根据语言环境的不同, 显示不
同语言的星期几使用 E 表示星期几,在 Locale.CHINA 语
言环境下,如“星期四”;在 Locale.US 语
言环境下,如 ThuH一天中的小时数(0~23)。一般用 HH 表示小时数使用 HH 表示的小时数,如 18h一天中的小时数(1~12)。一般使用hh表 示小时数使用 hh 表示的小时数,如 10 (注意 10 有
可能是 10 点,也可能是 22 点)m分钟数。一般使用 mm 表示分钟数使用 mm 表示的分钟数,如 29s秒数。一般使用 ss 表示秒数使用 ss 表示的秒数,如 38S毫秒数。一般使用 SSS 表示毫秒数使用 SSS 表示的毫秒数,如 156
例 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.pnntln(f.format(now)); //将当前时间袼式化为指定的格式}}
该程序的运行结果如下: