Date类、Calendar类的常用方法及运用

需求:
1.根据生日计算年龄
2.获取输入日期的星期几
3.获取输入日期的当月第一天
4.获取输入日期的当月最后一天
5.判断该年是否是闰年
6.根据整型数表示的年月日,生成日期类型格式

public class Birthday_NowTime {
    public static void main(String[] args) throws ParseException {
         //根据生日计算年龄
        //保存出生日期的date格式
        Date d1=new Date();
        //现在的日期date格式
        Date d2=new Date();
        //格式化日期(HH时mm分ss秒)
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");
        System.out.println("请输入你的生日,格式为:xx年xx月xx日");
        Scanner sc=new Scanner(System.in);
        String keyDate=sc.next();
        //将出生的格式化日期转换成date格式
        d1=sdf.parse(keyDate);
        //获取出生日期的毫秒
        long birthday=d1.getTime();
        //获取当前日期的毫秒
        long nowTime=d2.getTime();
        //获取现在到出生相差的毫秒
        long result=nowTime-birthday;
        System.out.println("你的年龄是:"+result/1000/60/60/24/365);
        System.out.println("请输入一个日期,格式为:xx年xx月xx日");
        String inDate=sc.next();
        //将输入的字符串转化为date日期
        Date d=sdf.parse(inDate);
        Calendar c=Calendar.getInstance();
        c.setTime(d);
        //获取输入日期的星期几
        int inDay=c.get(Calendar.DAY_OF_WEEK);
        switch (inDay){
            case 1:
                System.out.println("该天是:星期日");
                break;
            case 2:
                System.out.println("该天是:Monday");
                break;
            case 3:
                System.out.println("该天是:Tuesday");
                break;
            case 4:
                System.out.println("该天是:Wednesday");
                break;
            case 5:
                System.out.println("该天是:Thursday");
                break;
            case 6:
                System.out.println("该天是:Friday");
                break;
            case 7:
                System.out.println("该天是:Saturday");
                break;
        }
        //获取输入日期的当月第一天
        int firstDay=c.getActualMinimum(Calendar.DAY_OF_MONTH);
        c.set(Calendar.DAY_OF_MONTH,firstDay);
        System.out.println("该月第一天是:"+sdf.format(c.getTime()));
        //获取输入日期的当月最后一天
        int lastDay=c.getActualMaximum(Calendar.DAY_OF_MONTH);
        c.set(Calendar.DAY_OF_MONTH,lastDay);
        System.out.println("该月最后一天是:"+sdf.format(c.getTime()));
        //判断该年是否是闰年
        int year=c.get(Calendar.YEAR);
        if (year%4==0){
            System.out.println(year+"是闰年");
        }else {
            System.out.println(year+"不是是闰年");
        }
        //根据整型数表示的年月日,生成日期类型格式
        System.out.println("请输入一个整型数表示的年月日:");
        long ymd=sc.nextLong();
        System.out.println(sdf.format(ymd));

    }
}

执行结果:

请输入你的生日,格式为:xx年xx月xx日
199952日
你的年龄是:21
请输入一个日期,格式为:xx年xx月xx日
2020718日
该天是:Saturday
该月第一天是:20200701日
该月最后一天是:202007312020是闰年
请输入一个整型数表示的年月日:
1544662
19700101

总结:
1.result/1000/60/60/24:这里result表示毫秒,/1000是秒,/60是分,再/60是时,/24是天,/365就是年了。
2.Calendar类的常用方法,可以去API文档里熟悉,运用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值