Java语言提供了3个类来处理日期:
- java.util.Date:包装了一个long类型的数据,表示与GMT(格林尼治标准时间)的1970年1月1日 00:00:00这一时刻所相距的毫秒数。
看Date类的成员与构造方法;
...
//用于记录毫秒数
private transient long fastTime;
...
public Date() {
this(System.currentTimeMillis());
}
public Date(long date) {
fastTime = date;
}
例如:
Date date = new Date();
//getTime()方法返回Date对象包含的毫秒数
System.out.println(date.getTime());//打印1509090630565
Date类的方法大多已经过时,剩下的主要有:
long getTime():返回Date对象包含的毫秒数
void setTime(long time):设置Date对象包含的毫秒数
boolean before(Date when)、boolean after(Date when)、int compareTo(Date anotherDate):比较时间的先后
Date date = new Date();
Date date1 = new Date();
date1.setTime(1509090620565L);
System.out.println(date);
System.out.println(date1);
System.out.println(date.after(date1));
System.out.println(date.before(date1));
System.out.println(date.compareTo(date1));
- java.util.Calendar:可以灵活地设置或读取日期中的年月日时分秒等信息。
Calendar本身是一个抽象类,不能直接实例化,但是Calendar类提供一个工厂方法,即getInstance来创建一个Calendar实例。
Calendar的使用:
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
System.out.print(calendar.get(Calendar.YEAR) + " ");
System.out.print(calendar.get(Calendar.MONTH) + " ");
System.out.println(calendar.get(Calendar.DATE) + " ");
calendar.set(Calendar.YEAR, 2016);
calendar.set(Calendar.MONTH, 11);
calendar.set(Calendar.DATE, 12);
System.out.println(calendar.getTime());
Calendar的一月是从0开始的,即你设定月份为11时,其实是12月。
国际化:
Calendar calendar = Calendar.getInstance(Locale.getDefault());
Calendar calendar1 = Calendar.getInstance(TimeZone.getDefault());
Calendar calendar2 = Calendar.getInstance(TimeZone.getDefault(), Locale.getDefault());
java.text.DateFormat:对日期进行格式化。
DateFormat抽象类用于定制日期的格式,它有一个子类SimpleDateFormat,具体用法如下:
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MMMM-dd-EEEE hh:mm:ss");
System.out.println(simpleDateFormat.format(date));
simpleDateFormat.applyPattern("yy/MM/dd HH:mm:ss");
System.out.println(simpleDateFormat.format(date));
字符串”yyyy-MMMM-dd-EEEE hh:mm:ss”决定日期的格式。yyyy表示4位长度的年,而yy则表示2位长度的年,MMMM表示中文的月份,而MM则表示数字的月份,dd表示日,EEEE表示星期。hh、mm、ss表示时分秒,其中hh是12小时制的,HH是24小时制的。
DateFormat类的parse(String text)方法按照特定的格式把字符串解析成日期对象。
Date date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").parse("2017/10/30 08:51:00");
DateFormat类有一个静态方法:getDateTimeInstance(int dateStyle, int timeStyle)。该方法能返回标准格式的DateFormat对象。
Date date = new Date();
DateFormat shortDateFormat =
DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
DateFormat mediumDateFormat =
DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);
DateFormat longDateFormat =
DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
DateFormat fullDateFormat =
DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
System.out.println(shortDateFormat.format(date));
System.out.println(mediumDateFormat.format(date));
System.out.println(longDateFormat.format(date));
System.out.println(fullDateFormat.format(date));
与此方法相似的还有:DateFormat getDateInstance(int style)与DateFormat getTimeInstance(int style),分别针对日期与时间。