java中Calendar抽象类的详细使用

来源:互联网 发布:网络电视不能看回放 编辑:程序博客网 时间:2024/05/19 06:39

转载地址:http://www.open-open.com/lib/view/open1414743866872.html

写的非常详细,包括:

1.如何设置值;

2.如何获取值,最大值,最小值(一个月中的最后一天是多少号);

3.Calendar的各个范围介绍,比如DAY_OF_MONTH,DAY_OF_YEAR,DAY_OF_WEEK等等;

4.使用Calendar的roll函数和add函数计算;


说明:Calendar的roll函数和add函数的区别?

          比如当前日期是2016-08-18,获取Calendar cal = Calendar.getInstance();实例

          1.cal.add(Calendar.MONTH,5);      //运算结果为2017-01-18

          2.cal.roll(Calendar.MONTH,5);       //运算结果为2016-01-18

             两者的区别在于roll方法只在指定的Calendar范围(例子中指定的是月份)里面循环滚动,不会进位。而add方法会不断相加,产生进位。正如本例中,当前月份为8月份,再过5个月,那么年份加1,而roll函数不影响其他的范围,只在月份范围变化。


详细代码,如下所示:

package SecondInterview;import java.text.SimpleDateFormat;import java.util.Calendar;public class UseCalendar {public static void main(String[] args) {//详细使用Calendar抽象类Calendar cal = Calendar.getInstance();//Part1:通过Calendar常量(field)获取值int xingqi = cal.get(Calendar.DAY_OF_WEEK);//星期几:从星期天(返回1)开始计算,如果今天星期二,那么返回3System.out.println("星期几:"+xingqi);int day_of_year = cal.get(Calendar.DAY_OF_YEAR);//一年中第几天System.out.println("一年中的第几天:"+ day_of_year);int week_of_month = cal.get(Calendar.WEEK_OF_MONTH);//一个月的第几周System.out.println("一个月的第几周:"+week_of_month);int week_of_year = cal.get(Calendar.WEEK_OF_YEAR);//一年中的第几周System.out.println("一年中的第几周:"+week_of_year);int year = cal.get(Calendar.YEAR);//年System.out.println("年:"+year);int month = cal.get(Calendar.MONTH);//月,说明月份获取需要 +1,那么,赋值时需要 -1System.out.println("月:"+(month+1));int day_of_month = cal.get(Calendar.DATE);//一个月中的第几天 0-31int day_of_month1 = cal.get(Calendar.DAY_OF_MONTH);//一个月中的第几天 0-31System.out.println("日:"+day_of_month);int hour = cal.get(Calendar.HOUR);//时,12小时制System.out.println("时(12小时制):"+hour);int hour1 = cal.get(Calendar.HOUR_OF_DAY);//时,24小时制,一般使用这个属性赋值System.out.println("时(24小时制):"+hour1);int minute = cal.get(Calendar.MINUTE);//分System.out.println("分:"+minute);int second = cal.get(Calendar.SECOND);//秒System.out.println("秒:"+second);int milliSecond = cal.get(Calendar.MILLISECOND);//取得精确的毫秒数System.out.println("毫秒:"+milliSecond);//Part1 end//Part2:使用Calendar的roll和add函数计算SimpleDateFormat simpleFormate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//当前时间再过2个小时后的时刻cal.add(Calendar.HOUR_OF_DAY, 2);System.out.println("当前时间再过2个小时后的时刻:"+ simpleFormate.format(cal.getTime()) );//当前时间再过5天后的时刻cal.add(Calendar.DAY_OF_MONTH, 5);System.out.println("当前时间再过5天后的时刻:"+ simpleFormate.format(cal.getTime()) );//*使用roll函数,求当前时间再过31天后的时刻//说明:一般不使用,原因是该方法只在一个月里面循环计算,其大小不会超过该月最值。roll滚动,在一个月份里滚动,不超过最值。cal.roll(Calendar.DAY_OF_MONTH, 32);    System.out.println("使用roll函数,当前时间再过32天后的时刻:"+ simpleFormate.format(cal.getTime()) );//当前时间再过6个月后的时刻cal.add(Calendar.MONTH, 6);System.out.println("当前时间再过6个月后的时刻:"+ simpleFormate.format(cal.getTime()) );//使用roll函数cal.roll(Calendar.MONTH, 12);System.out.println("使用roll,当前时间再过12个月后的时刻:"+ simpleFormate.format(cal.getTime()) );//使用roll函数cal.roll(Calendar.MONTH, true);System.out.println("使用roll,当前时间再过1个月后的时刻:"+ simpleFormate.format(cal.getTime()) );//当前时间再过3年后的时刻cal.add(Calendar.YEAR, 3);System.out.println("当前时间再过3年后的时刻:"+ simpleFormate.format(cal.getTime()) );//Part2 end//Part3 使用Calendar获取值//1.获取当天的起止时间//2.获取当周的起止时间//3.获取当月的起止时间   1,2,3显示格式均为"yyyy-MM-dd HH:mm:ss"//一天中的开始时刻cal.set(Calendar.HOUR_OF_DAY, 0);cal.set(Calendar.MINUTE, 0);cal.set(Calendar.SECOND, 0);String start1 = simpleFormate.format(cal.getTime());//一天中的结束时刻cal.set(Calendar.HOUR_OF_DAY, 23);cal.set(Calendar.MINUTE, 59);cal.set(Calendar.SECOND, 59);String end1 = simpleFormate.format(cal.getTime());System.out.println("当天的起止时间:" + start1 + "~" + end1);//一周中的开始时间cal.setFirstDayOfWeek(Calendar.MONDAY);cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);cal.set(Calendar.HOUR_OF_DAY, 0);cal.set(Calendar.MINUTE, 0);cal.set(Calendar.SECOND, 0);String start2 = simpleFormate.format(cal.getTime());//一周中的结束时间cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);cal.set(Calendar.HOUR_OF_DAY, 23);cal.set(Calendar.MINUTE, 59);cal.set(Calendar.SECOND, 59);String end2 = simpleFormate.format(cal.getTime());System.out.println("当周的起止时间:" + start2 + "~" + end2);//一月中的开始时间cal.set(Calendar.DAY_OF_MONTH, 1);//从1号开始cal.set(Calendar.HOUR_OF_DAY, 0);cal.set(Calendar.MINUTE, 0);cal.set(Calendar.SECOND, 0);String start3 = simpleFormate.format(cal.getTime());//一月中的结束时间int maxMonthDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);cal.set(Calendar.DAY_OF_MONTH, maxMonthDay);cal.set(Calendar.HOUR_OF_DAY, 23);cal.set(Calendar.MINUTE, 59);cal.set(Calendar.SECOND, 59);String end3 = simpleFormate.format(cal.getTime());System.out.println("当月的起止时间:" + start3 + "~" + end3);}}


        


0 0
原创粉丝点击