Claendar类的使用

目录

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>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值