使用Calendar或DateFormat拆分日期

今天碰到获取时间中月份和日期的需求,立马去翻jdk,发现util.Date类中的获取方法竟然在jdk1.1就过期了…
于是按着jdk中推荐的Calendar类摸过去,找到方法。但是不知道为什么Date里的get方法不推荐了,找机会一定要瞅一瞅源码(ง๑ •̀_•́)ง

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/*
使用Calendar实现时间拆解
/*
public void getTimeByCalendar(){
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());// 传入Date对象即可
int year = cal.get(Calendar.YEAR);// 获取年份
int month=cal.get(Calendar.MONTH);// 获取月份
int day=cal.get(Calendar.DATE);// 获取日
int hour=cal.get(Calendar.HOUR);// 小时
int minute=cal.get(Calendar.MINUTE);// 分
int second=cal.get(Calendar.SECOND);// 秒
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);// 一周的第几天
System.out.println("现在的时间是:公元"+year+"年"+month+"月"+day+"日 "+hour+"时"+minute+"分"+second+"秒 星期"+dayOfWeek);
}

翻jdk的同时还发现另一种拆分时间的方法,但是没有Calendar自由。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/*
使用DateFormat实现时间拆解
*/
public void getTimeByDate(){
Date date = new Date();
DateFormat df1 = DateFormat.getDateInstance();//日期格式,精确到日
DateFormat df2 = DateFormat.getDateTimeInstance();//可以精确到时分秒
DateFormat df3 = DateFormat.getTimeInstance();//只显示出时分秒
DateFormat df4 = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL); //显示日期,周,上下午,时间(精确到秒)
DateFormat df5 = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG); //显示日期,上下午,时间(精确到秒)
DateFormat df6 = DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT); //显示日期,上下午,时间(精确到分)
DateFormat df7 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM); //显示日期,时间(精确到分)
System.out.println(df1.format(date));
}

我个人是比较喜欢Calendar啦,虽然觉得Date类中的get方法更方便,但毕竟oracle不推荐了,那就算了吧。
说来说去不就是为了少写几行代码吗Orz


相关链接:
Java™ Platform, Standard Edition 8 API Specification