想要通过java获取各种各样的时间,需要三个包:Calendar、Date以及SimpleDateFormat。利用三个类相互转换,可以完成各种形式的时间计算以及显示。
采用Calendar cal= Calendar.getInstance();进行初始化,此时默认的时间为当前时刻。
通过Calendar的get方法,可以获取很多需要的时间信息,比如:
1.获取年月日时分秒等信息,为get方法:
1. cal.get(Calendar.YEAR);//年
2. cal.get(Calendar.MONTH);//月,注意月从0开始
3. cal.get(Calendar.DATE);//日
4. cal.get(Calendar.HOUR_OF_DAY);//时
5. cal.get(Calendar.MINUTE); //分
6. cal.get(Calendar.SECOND); //秒
7. cal.get(Calendar.AM_PM); //获取上下午,0是上午,1是下午
8. cal.get(Calendar.WEEK_OF_YEAR); //获取当前时间是本年的第几周
9. cal.get(Calendar.WEEK_OF_MONTH); //获取当前时间是本月的第几周
10. cal.get(Calendar.DAY_OF_YEAR); //获取当前时间是本年的第几天
11. cal.get(Calendar.DAY_OF_WEEK);//获取当前日期在星期中的第几天,注意从第一天是周日
12. cal.getActualMaximum(Calendar.DAY_OF_MONTH);//获取当月中天数的最大值,即当月的日期数
13. cal.get(Calendar.DAY_OF_MONTH);//当前时间所在月份的第几天
14. cal.getTimeMillis();//获取当前时间的毫秒表示
以上get方法返回的都是int变量。
例如:
- cal.set(Calendar.YEAR,1990);
其他时间信息的set方式与年类似,不在赘述,同样,需要强调的是,注意月是从0开始,而周则是从1开始,1对应周日。
如果需要更改周开始于星期一,可以采用函数setFirstDayOfWeek(MONDAY) 。
- cal.setTime(Date date) 使用给定的 Date 设置Calendar 的时间。
- setTimeInMillis(long millis) 用给定的 long 值设置Calendar 的当前时间值。
3.对当前日期进行增减操作:
cal.add(Calendar.DATE, 1);这个方法就是在当前的日期上加1,得到明天的时间,如果要获取昨天的时间则为-1,同理,获取其他相对于今天的日期只需要更改参数即可,而增加年月信息的方法也是如此。
与add对应的是一个roll方法,它与add类似,也可以实现时间信息的加减,但是要注意,这个函数不更改更大的参数,比如,如果当前时间为3月29日,调用cal.add(Calendar.DATE, 3),会将时间设置为4月1号,即虽然参数是日信息,但是会在时间超出本月后更改月的信息,而cal.roll(Calendar.DATE, 3)则会返回3月1号。
4.Calendar与Date的相互转换
Calendar转换为Date
1. Date date=cal.getTime();
Date转换为Calendar
1. Date date=new Date();
2. cal.setTime(date);
5.比较两天谁前谁后
这个需求可以用Date的before和after来完成,例如:
1. Date date1= new Date();
2. Date date2= cal.getTime();
3. date1.after(date2);
注意,这两个方法是严格按照是否相差24个小时来判断两天谁前谁后的,所以如果date1为2015年3月29日早上八点整,而date2为3月28日晚上八点整的话,返回的结果会是false。
6.时间的字符串输出与输入
1. Date date=new Date();
2. SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
3. System.out.println(df.format(date));
以上即可完成格式化输出时间,yyyy表示年,MM为月,dd为日,hh为时,mm为分,ss为秒,大小写要注意区分。
1. SimpleDateFormat sdf = new SimpleDateFormat( " yyyy-MM-dd HH:mm:ss " );
2. Date date = sdf.parse( " 2015-03-29 21:03:59 " );
以上方法可以将字符串转化为日期,注意,此方法会有ParseException,需要使用try-catch。
学会使用以上方法,关于日期的操作基本都可以实现了~