java获取一年的所有时间,集合 Calendar年月日星期

 public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入年份");
        int year = 2020;
        int m = 1;//月份计数
        while (m < 13) {
            int month = m;
            Calendar cal = Calendar.getInstance();//获得当前日期对象
            cal.clear();//清除信息
            cal.set(Calendar.YEAR, year);
            cal.set(Calendar.MONTH, month - 1);//1月从0开始
            int count = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
            int week = cal.get(Calendar.DAY_OF_WEEK);
            System.out.printf("\t\t\t%d年%d月\n\n", year, month);
            System.out.print("日\t一\t二\t三\t四\t五\t六\n");
            int i;
            for (i = 0; i < week - 1; i++) {
                System.out.print("\t");
            }
            for (int j = 1; j <= count; j++) {
                System.out.print(j + "\t");
                if ((i + j) % 7 == 0) {
                    System.out.println();
                }
            }
            System.out.println();
            m++;
        }

    }


 /*   public static void main(String[] args) throws ParseException {
        Calendar dayc1 = new GregorianCalendar();
        Calendar dayc2 = new GregorianCalendar();
        DateFormat df = new SimpleDateFormat("yy-MM-dd");
        Date daystart = df.parse("17-2-1"); //按照yyyy-MM-dd格式转换为日期
        Date dayend = df.parse("17-12-31");
        dayc1.setTime(daystart); //设置calendar的日期
        dayc2.setTime(dayend);
        int year = dayc1.get(Calendar.YEAR);
        int month = dayc1.get(Calendar.MONTH)+1;
        int day = dayc1.get(Calendar.DATE);

        for (; dayc1.compareTo(dayc2) <= 0; ) {   //dayc1在dayc2之前就循环
            System.out.println( "年月日"
                    + dayc1.get(Calendar.YEAR) + "-" + dayc1.get(Calendar.MONTH) + "-" + dayc1.get(Calendar.DATE) );  //打印年月日
            dayc1.add(Calendar.DAY_OF_YEAR, 1);  //加1天

        }
    }*/


/*    public static void main(String args[ ])
    {
        Date m = new Date( );
        System.out.println("现在是:"+m.toString( ));
        Calendar n = Calendar.getInstance( );
        int year = n.get(Calendar.YEAR);
        int month = n.get(Calendar.MONTH)+1;
        int day = n.get(Calendar.DATE);
        int week = n.get(Calendar.DAY_OF_WEEK)-1;
        Date t = n.getTime ( );
        String week1 = new String("日一二三四五六");
        String week2=week1.substring(week, week+1);
        String x = new String( );
        x = "现在是:"+year+"年"+month+"月"+day+"日,星期"+week2;
        System.out.println("现在是:"+t);
        System.out.println(x);
    }*/

   /* public static void main(String[] args) {
        Calendar c_begin = new GregorianCalendar();
        Calendar c_end = new GregorianCalendar();
        DateFormatSymbols dfs = new DateFormatSymbols();
        String[] weeks = dfs.getWeekdays();

        c_begin.set(2019, 3, 2); //Calendar的月从0-11,所以4月是3.
        c_end.set(2019, 3, 29); //Calendar的月从0-11,所以5月是4.

        int count = 1;

        *//*
          cal1.add(Calendar.DAY_OF_MONTH,1);
          cal1.add(Calendar.DAY_OF_YEAR,1);
          cal1.add(Calendar.DATE,1);
          就单纯的add操作结果都一样,因为都是将日期+1,区别就是在月的日期中加1还是年的日期中加1
          但是Calendar设置DAY_OF_MONTH和DAY_OF_YEAR的目的不是用来+1
          将日期加1,这通过cal1.add(Calendar.DATE,1)就可以实现
          DAY_OF_MONTH的主要作用是cal.get(DAY_OF_MONTH),用来获得这一天在是这个月的第多少天
          Calendar.DAY_OF_YEAR的主要作用是cal.get(DAY_OF_YEAR),用来获得这一天在是这个年的第多少天。
          DAY_OF_WEEK,用来获得当前日期是一周的第几天
         *//*

        c_end.add(Calendar.DAY_OF_YEAR, 1);  //结束日期下滚一天是为了包含最后一天

        while (c_begin.before(c_end)) {
            System.out.println("第" + count + "周  日期:" + new java.sql.Date(c_begin.getTime().getTime()) + "," + weeks[c_begin.get(Calendar.DAY_OF_WEEK)]);

            if (c_begin.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
                count++;
            }
            c_begin.add(Calendar.DAY_OF_YEAR, 1);
        }
    }
*/



//    public static void main(String[] args) throws ParseException {
//        String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
//        Calendar calendar=Calendar.getInstance();
//        calendar.set(2017, 12, 1);
//        long next =calendar.getTimeInMillis();
//        calendar.add(Calendar.MONTH,-1);   //这里想要得到当月的月份,这里写0不行?
//        while(calendar.getTimeInMillis()!=next)
//        {
//            System.out.println(calendar.getTime().toLocaleString());
//            int w = calendar.get(Calendar.DAY_OF_WEEK)-1;
//            if (w<0) {
//                w=0;
//            }
//            System.out.println(weekDays[w]);
//            int i=1;
//            calendar.add(Calendar.DAY_OF_MONTH, i++);
//        }
//
//
//    }
    /**
     * 查询某时间段内的所有日期列表,包括开始日期,不包括结束日期
     * @param dBegin,dEnd
     * @return List<String>
     */
    public static List<String> findDates(String dBegin, String dEnd) {
        //日期工具类准备
        DateFormat format = new SimpleDateFormat("yyyyMMdd");

        try {
            //设置开始时间
            Calendar calBegin = Calendar.getInstance();
            calBegin.setTime(format.parse(dBegin));
            //使包括开始日期
            calBegin.set(Calendar.DAY_OF_YEAR, calBegin.get(Calendar.DAY_OF_YEAR) - 1);

            //设置结束时间
            Calendar calEnd = Calendar.getInstance();
            calEnd.setTime(format.parse(dEnd));
            //使不包括结束日期
            calEnd.set(Calendar.DAY_OF_YEAR, calEnd.get(Calendar.DAY_OF_YEAR) - 1);

            //装返回的日期集合容器
            List<String> DateList = new ArrayList<String>();

            // 每次循环给calBegin日期加一天,直到calBegin.getTime()时间等于dEnd
            while (calEnd.getTime().after(calBegin.getTime()))  {
                // 根据日历的规则,为给定的日历字段添加或减去指定的时间量
                calBegin.add(Calendar.DAY_OF_MONTH, 1);
                DateList.add(format.format(calBegin.getTime()));
            }
            return DateList;
        } catch (ParseException e) {
            e.printStackTrace();
            return null;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值