Java的Calendar类怎么用

通过例子快速使用java的calendar类

1.获取目前时间,get方法
        Calendar c=Calendar.getInstance();//获取一个日历类的实例

        //获取当前时间
        int year=c.get(Calendar.YEAR);//获取电脑时间现在是哪一年,想改哪年就改哪年。
        int month = c.get(Calendar.MONTH)+1;//获取月,值为0-11,真实月份需加1
        int day = c.get(Calendar.DATE);//获取日
        int hour = c.get(Calendar.HOUR_OF_DAY);//获取时,默认24小时制
        int minute = c.get(Calendar.MINUTE);//获取分
        int second = c.get(Calendar.SECOND);//获取秒
        System.out.println(year+"年"+month+"月"+day+"日"+hour+"时"+minute+"分"+second+"秒");
2.设置目标时间,set方法
2.1快捷设置
        //快捷设置
        c.set(1998,5,2);//设置一个日历,年月日,真实月是+1的,所以其实这设置的是6月
        c.set(1998,5,2,5,36);//年月日时分
        c.set(1998,5,2,5,36,55);//年月日时分秒
2.2逐个设置
        //逐个设置,不设置的获取的话就是直接获取电脑上的时间
        c.set(Calendar.YEAR, 1998);//设置年
        c.set(Calendar.MONTH, 5);//设置月,这是6月
        c.set(Calendar.DATE, 2);//设置日
        c.set(Calendar.HOUR_OF_DAY, 5);//设置时
        c.set(Calendar.MINUTE, 36);//设置分
        c.set(Calendar.SECOND, 55);//设置秒
3.增加时间,add方法
        //测试add方法,数字正负都无所谓
        c.add(Calendar.YEAR, 30);//加到个石油消失年
        c.add(Calendar.MONTH, 12);//加12就变回现在的月,并不会报错
        c.add(Calendar.DATE, 367);//这是按照今年的日来计算了,我这一年刚好闰年,加366天还是29号,这是个坑要慎用
        c.add(Calendar.HOUR_OF_DAY, 24);//加多少个小时,过了24小时自动余24
        c.add(Calendar.MINUTE, 60);//加多少分钟,过了60分钟自动余60
        c.add(Calendar.SECOND, 61);//加多少秒,过了60自动余60
4.其他常用
        Calendar c=Calendar.getInstance();//获取一个日历类的实例
        int zhouji = c.get(Calendar.DAY_OF_WEEK);//获取今天是周几,周日是1,周六是7
        int this_month_max_day = c.getActualMaximum(Calendar.DAY_OF_MONTH);//获取这个月最多有多少天
        Date date = c.getTime();//获取一个date类,打印为Sat Feb 29 15:08:02 CST 2020
5.其他常用
5.1 今天是周几
        Calendar c=Calendar.getInstance();//获取一个日历类的实例
        //查看今天是周几
        int zhouji = c.get(Calendar.DAY_OF_WEEK);//获取这个月的第一天是周几,周日是1,周六是7
        if (zhouji==1){
            zhouji=7;
        }else{
            zhouji=zhouji-1;
        }
        System.out.println("今天是周"+zhouji);

测试结果
在这里插入图片描述
在这里插入图片描述

5.2 当月第一天是周几
        //获取当月第一天是周几
        //1.先把时间设置为这个月的第一天
        Calendar c=Calendar.getInstance();//获取一个日历类的实例
        c.set(Calendar.YEAR, 2020);//年月可以不设置,但是为了方便更换。
        c.set(Calendar.MONTH, 1);//今天是2020年2月29日,设置1就是2月的意思,这是0-11月制的
        c.set(Calendar.DATE, 1);//设置为当月第一天

        //2.获取这天为周几
        int zhouji = c.get(Calendar.DAY_OF_WEEK);//获取这个月的第一天是周几,周日是1,周六是7
        if (zhouji==1){
            zhouji=7;
        }else{
            zhouji=zhouji-1;
        }

        //3.得到本月第一天是周几,如果要做日历的话前面空的就只需要让周几-1
        System.out.println("本月第一天是周"+zhouji);

测试结果
在这里插入图片描述
在这里插入图片描述

5.3 根据输入日期打印日期表
import java.util.Calendar;
import java.util.Scanner;

public class TestCalendar {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入年份");
        int year = scanner.nextInt();
        System.out.println("请输入月份");
        int month = scanner.nextInt();

        Calendar calendar=Calendar.getInstance();
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH,month-1);//要设置为输入的-1,因为是0-11制的
        write(calendar);
    }

    //因为太乱,所以定义一个方法会好一点
    public static void write(Calendar calendar) {
        int a=0;
        System.out.println("--------------------"+calendar.get(Calendar.YEAR)+"年"+(calendar.get(Calendar.MONTH)+1)+"月-------------------");
        System.out.println("一\t二\t三\t四\t五\t六\t日");

        //获取当月第一天是周几
        calendar.set(Calendar.DATE, 1);
        int zhouji = calendar.get(Calendar.DAY_OF_WEEK);//获取这个月的第一天是周几,周日是1,周六是7
        if (zhouji==1){
            zhouji=7;
        }else{
            zhouji=zhouji-1;
        }

        //打印空制表符
        for (int j = 1; j < zhouji; j++) {
            System.out.print("\t");
            a++;
        }
        for (int j = 1; j <= calendar.getActualMaximum(Calendar.DAY_OF_MONTH); j++) {
            System.out.print(j+"\t");
            a++;
            if (a%7==0) {//从空制表符开始每7个就换行
                System.out.println();
            }
        }
    }
}

测试结果1:
2020年2月日历
测试结果2:
2020年3月日历

总结
  • 虽然这很不起眼,但是每次我写日历类都要百度搜,所以如今写博客还不如把这些常用的比如calendar,date,string,map,list都写一遍,以后好翻阅查看,记是不可能记的,这辈子都不可能记的,只有谢谢博客混混日子的样子了,网上的各位都是人才,点个赞不过分吧。
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值