Calendar类使用点

简介

1、Calendar是抽象类,创建实例时不能用new,而是使用Calendar.getInstance();
2、Date date=Calendar.getTime(),获取到的Date与使用java.util.Date:本质和是一 个从1970年1月1日0时整开始到某个时间点的亳秒数;
3、Calendar的月份是从0开始,0表示1月,11表示12月;
星期从星期天开始,1 表示星期天,7表示星期六;

方法

包含 set/get/add/getActualMaximum;equals方法:before/after/compareTo,返回值为boolean,boolean,int(-1,0,1),具体可查jdk api手册

public static void main(String[] args){
		//1、设置日期为指定值:
		Calendar cal=Calendar.getInstance();
		cal.set(2019,7,6);//2019-8-6
		cal.set(2019,7,6,21,10,5);//2019-8-6 21:10:5
		//2、输出先转为java.Util.Date然后使用simpleDateFormat输出(SSS表示毫秒)
		SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd E HH:mm:ss.SSS");
		//转为Date,与java.Util.Date的getTime()不同的是,前者返回Date,后者返回Long类型的毫秒数
		Date dt=cal.getTime();
		//转为String
		String dtStr=sdf.format(dt);
		System.out.println(dtStr);//输出结果:20190806 星期二 21:10:05.753
		
		//3、 set/get开头的方法可以设置或者获取日期的任何一个字段,比如年份,月份
		int year = cal. get(Calendar.YEAR);//获取年份
		int month = cal.get(Calendar.MONTH) + 1;// 月份
		int weekday = cal. get(Calendar.DAY_OF_WEEK);
		System.out.println(year + ":" + month + ":" + weekday);//输出  2019:8:3(2019年 8月 星期 二)
		// 也可以直接修改字段
		cal.set(Calendar.YEAR, 2020);
		cal.set(Calendar.MONTH, 12);//12表示13月,自动记到下一年的1月
		showCalendar(cal.getTime());//输出  20210106 星期三 21:10:05.875
		
		//4、还可以在某个字段.上加多少值
		cal.add(Calendar.DATE, 100);// 在当前日期上往后推100天
//		cal.add(Calendar.DATE, -100);// 在当 前日期上往前推100天
		showCalendar(cal.getTime());//输出  20210416 星期五 21:10:05.462

		//5、 还可以获取某个字段的最大值,比如当前月份一-共有多少天
		int days = cal.getActualMaximum(Calendar.DATE);
		System.out.println("这个月有" + days + "天");//输出  这个月有30天
	}

	public static void showCalendar(Date date) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd E HH:mm:ss.SSS");
		System.out.println(sdf.format(date));
	}

输出指定日期的前一个月的每一天

		String str = "20150623";      //指定日期
        Calendar calendar = Calendar.getInstance();
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");   //日期格式化
            Date date = sdf.parse(str);
            calendar.setTime(date);
            //calendar.add(calendar.DAY_OF_YEAR, -1);
            Date enddate = calendar.getTime();

            //System.out.println(enddate.toString());

            calendar.setTime(date);
            calendar.add(calendar.MONTH, -1);    //得到当前日期减一个月的时间点
            //Date begindate = calendar.getTime();

            while(calendar.getTime().before(enddate)){
                System.out.println(sdf.format(calendar.getTime()));

                calendar.add(Calendar.DAY_OF_MONTH, 1);
            }

        } catch (ParseException e) {
            System.out.println(e.getMessage());
        }

输出结果如下:

20150523
20150524
20150525
20150526
20150527
20150528
20150529
20150530
20150531
20150601
20150602
20150603
20150604
20150605
20150606
20150607
20150608
20150609
20150610
20150611
20150612
20150613
20150614
20150615
20150616
20150617
20150618
20150619
20150620
20150621
20150622
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值