目录
1、Claendar类的使用
2、时间的计算(加/减相应的天数)
3、两个月份相差多少天
1、Claendar类的使用
Calendar cal = Calendar.getInstance();
- System.out.println("获取当前的年份:"+cal.get(Calendar.YEAR));
- //在Clendar中起始月份是0:如1-->0
- System.out.println("获取当前的月份:"+cal.get(Calendar.MONTH));
- //一年中有多少个周
- System.out.println("根据当前年的总周数,得出当前日期是第几周"
- + ":"+cal.get(Calendar.WEEK_OF_YEAR));
- System.out.println("一年有多少个周==>:"+cal.getActualMaximum(Calendar.WEEK_OF_YEAR));
- System.out.println("当前为多少号===>:"+cal.get(Calendar.DATE));
- System.out.println("这个月的总天数当中当前过了多少天:"+cal.get(Calendar.DAY_OF_MONTH));
- System.out.println("当前月有多少天------>:"+cal.getActualMaximum(Calendar.DAY_OF_MONTH));
- System.out.println("当年的所有天数当中,当天过了多少天:"+cal.get(Calendar.DAY_OF_YEAR));//时间不准确
- System.out.println("当前年有多少天------>:"+cal.getActualMaximum(Calendar.DAY_OF_YEAR));
- //一周7天当中,当前时间是星期几(1-7),值得注意的是一周的开始是星期日,结束是星期六,如果今天是星期一,那么cal.get(Calendar.DAY_OF_WEEK)的值为2
- System.out.println("一周7天当中,当前时间是星期几(1-7),:"+cal.get(Calendar.DAY_OF_WEEK));
- System.out.println("指的是当前时间是所在当前月的第几个星期,一个月的1号为第一周,8号为第二周:"+cal.get(Calendar.DAY_OF_WEEK_IN_MONTH));
- System.out.println("当前时间在当前月的星期数:"+cal.get(cal.DAY_OF_WEEK_IN_MONTH));
- //用于判断当前时间是AM,还是PM,若是AM值为0,若是PM为1.
- System.out.println("用于判断当前时间是AM,还是PM,若是AM值为0,若是PM为1.:"+cal.get(Calendar.AM_PM));
- System.out.println("显示当前时间的12小时制:"+cal.get(Calendar.HOUR));
- System.out.println("显示当前时间的24小时制:"+cal.get(Calendar.HOUR_OF_DAY));
- System.out.println("显示当前时间的分钟数:"+cal.get(Calendar.MINUTE));
- System.out.println("显示当前时间的秒数:"+cal.get(Calendar.SECOND));
- System.out.println("显示当前时间的毫秒数:"+cal.get(Calendar.MILLISECOND));
2、时间的计算(加/减相应的天数)
- ·······//第一种时间相加
- SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd");
- Calendar cal = Calendar.getInstance();
- String time = sim.format(new Date());
- //在当前时间加上10天 201/12/21
- //cal.add(Calendar.DATE, 11);
- cal.add(Calendar.DATE, -11);//加上11天之后的日期===>2018-12-10
- String format = sim.format(cal.getTime());
- System.out.println("加上11天之后的日期===>"+format);//加上11天之后的日期===>2019-01-01
- //第二种时间相加,通过毫秒数进行时间的修改
- long times = new Date().getTime();
- //在当前时间上加上11天,将天数转化为毫秒数
- long day = 11 * 24 * 60 * 60 * 1000;
- times += day;
- //times -= day;//通过毫秒数进行时间计算---->2018-12-10
- String td = sim.format(new Date(times));
- System.out.println("通过毫秒数进行时间计算---->"+td);//通过毫秒数进行时间计算---->2019-01-01
3、两个月份相差多少天
- SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd");
- Date before = sim.parse("2018-12-20");
- Date after = sim.parse("2018-10-21");
- //计算两个月份之间相差的天数
- Calendar cld = Calendar.getInstance();
- Calendar cal = Calendar.getInstance();
- cld.setTime(before);
- cal.setTime(after);
- //==========
- cld.set(Calendar.HOUR_OF_DAY,0);
- cld.set(Calendar.MINUTE,0);
- cld.set(Calendar.SECOND,0);
- //----------
- cal.set(Calendar.HOUR_OF_DAY,0);
- cal.set(Calendar.MINUTE,0);
- cal.set(Calendar.SECOND,0);
- int days = ((int)(cal.getTime().getTime()/1000) -
- (int)(cld.getTime().getTime()/1000))/3600/24;
- System.out.println(days);//-60
- 中间紫色部分的是设置两个时间为0点,但是将紫色部分的注释掉相差的天数还是一样的,怀疑是由于时间为使用时分秒,如:
- SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date before = sim.parse("2018-12-20 14:25:50");
Date after = sim.parse("2018-10-21 1:45:40");- 经过测试两个月份相差的时间还是60天,这个疑问如果大家在使用的过程遇到有好的解释请留言
4、月份相差
待验证,目前jar引不到,待后期测试 DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd"); DateTime start = formatter.parseDateTime("2017-07-11"); DateTime end = formatter.parseDateTime("2017-11-19"); int months = Months.monthsBetween(start, end).getMonths(); System.out.println(months);<dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>2.9.6</version> </dependency>