Calendar(曾经java的日期王者)

本文介绍了Java中的Calendar类,包括其作为抽象类的基本用法、String转Calendar的步骤,并展示了如何通过get和set方法获取和设置日期信息,以及一个小练习实例,演示如何根据用户输入显示指定日期所在的周。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

14天阅读挑战赛

一、初始Calendar

1、基本内容:

        Calendar 是一个抽象类,不可以直接创造对象

        常用的方法: get方法,传入参数:Calendar中定义的常量

                               set方法:可以改变Calender中的内容

2、String-->Calender

        转置过程需要java.sql.Date


        String--->java.sql.Date

        java.sql.Date--->Calender

//分解:
        //String--->java.sql.Date:
        java.sql.Date date = java.sql.Date.valueOf("2020-4-5");
        // java.sql.Date--->Calender
        cal.setTime(date);
        System.out.println(cal);

3、简单使用Calendar其中方法的代码

        get方法,传入参数:Calendar中定义的常量

        get(Calendar.YEAR)//获得当前年份

        get(Calendar.MONTH)//获得当前月份

        get(Calendar.DATE)//获得当前日(号数)

        get(Calendar.DAY_OF_WEEK)//获得今天是这周的第几天(第一天为周日)

        getActualMaximum(Calendar.DATE)//获取当月日期的最大天数

        getActualMinimum(Calendar.DATE)//获取当月日期的最小天数


        set方法:可以改变Calender中的内容,后面所输内容即为自己想改变的量

        cal.set(Calendar.YEAR,1990);

        cal.set(Calendar.MONTH,3);

        cal.set(Calendar.DATE,16);

package com.msb.test02;

import java.util.Calendar;
import java.util.GregorianCalendar;
public class Test06 {
    public static void main(String[] args) {
        //Calendar 是一个抽象类,不可以直接创造对象
        //GregorianCalendar()子类 extends Calendar(父类是一个抽象类)
        Calendar cal = new GregorianCalendar();
        Calendar cal2 = Calendar.getInstance();
        System.out.println(cal);

        //常用的方法:
        // get方法,传入参数:Calendar中定义的常量
        System.out.println( cal.get(Calendar.YEAR));
        System.out.println(cal.get(Calendar.MONTH));
        System.out.println(cal.get(Calendar.DATE));
        System.out.println(cal.get(Calendar.DAY_OF_WEEK));
        System.out.println(cal.getActualMaximum(Calendar.DATE));//获取当月日期的最大天数
        System.out.println(cal.getActualMinimum(Calendar.DATE));//获取当月日期的最小天数

        //set方法:可以改变Calender中的内容
        cal.set(Calendar.YEAR,1990);
        cal.set(Calendar.MONTH,3);
        cal.set(Calendar.DATE,16);
        System.out.println(cal);

        //String--->Calender:
        //分解:
        //String--->java.sql.Date:
        java.sql.Date date = java.sql.Date.valueOf("2020-4-5");
        // java.sql.Date--->Calender
        cal.setTime(date);
        System.out.println(cal);
    }
}

二、小练习---输入日期显示台,具体到周

        *代码后均有备注使用的Calendar的各种方法,请仔细阅读*

package com.msb.test02;
import java.util.Calendar;
import java.util.Scanner;
public class Test08 {
    public static void main(String[] args) {
        //String--->Calender:
        //录入日期的(String):
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你想查看的日期:(提示:请按照例如2012-5-6的格式书写)");
        String strDate = sc.next();
       /* System.out.println(strDate);*/
        //String--->Calender:
        //String--->Date:
        java.sql.Date date = java.sql.Date.valueOf(strDate);
        //Date---->Calendar:
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);

        //后续操作:
        //星期提示:
        System.out.println("日\t一\t二\t三\t四\t五\t六\t");

        //获取本月的最大天数:
        int maxDay = cal.getActualMaximum(Calendar.DATE);
        //获取当前日期中的日:
         int nowDay = cal.get(Calendar.DATE);

         //将日期调为本月的1号:
        cal.set(Calendar.DATE,1);
        //获取这个一号是本周的第几天:
        int num = cal.get(Calendar.DAY_OF_WEEK);

        //前面空出来的天数为:
        int day = num - 1;
        //引入一个计数器:
        int count = 0;//计数器最开始值为0
        //在日期前将空格打印出来:
        for (int i = 1; i <=day ; i++) {
            System.out.print("\t");
        }
        //空出来的日子也要放入计数器:
        count = count + day;
        //遍历:从1号开始到maxDay号进行遍历:
        for (int i = 1; i <=maxDay ; i++) {

            if (i == nowDay){
                System.out.print(i+"*"+"\t");
            }else {
                System.out.print(i+"\t");
            }
            count++;//每在控制台输入一个数字,计数器做加1操作
            if (count%7 == 0){
                System.out.println();
            }
        }

    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在摆烂的小母

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值