Java学习时间和日期

本文介绍了Java中的Date和Calendar类,包括日期设置、获取、操作方法以及如何设计一个类来解析并获取用户输入日期的星期几,即使日期格式不规范。
摘要由CSDN通过智能技术生成

1 常用类

        1.1 Date 表示日期 具体类

                设置时间 

 

        1.2 Calendar 表示日历 抽象类

                设置日历的设定日期

                void set(int year,int month,int date);

                void set(int year,int month, int date,   int hour, int minute,int second);

                void setTime(Date d); 

                int get(int field):可以获取有关年份、月份、小时、星期等信息,参数field的有效值由Calendar的静态常量指定,例如:calendar.get(Calendar.MONTH);

                 getTime():返回一个Date对象  

                getTimeInMillis():返回长整数,表示距离1970年1月1日零时零分零秒的毫秒数 

                add(int  field, int amount):增加field指定的年份、月份、小时等数量

                 before(Object o):是否在某日期之前

                after(Object o):是否在某日期之后 

                compareTo(Calandar a):与另一日历日期比较: 相等返回0; after a返回1; before a返回-1

 

                练习:设计一个类Test 包含一个方法int getDayOFWeek(String date) 返回用户输入日期是个周几,例如用户输入2023.12.22返回“5”。要求:用户输入的日期格式满足年月日的顺序,但是用户输入可能会不规范,可能是2023-1-12,也可能是2023年10月9日。无论用户如何输入,只要符合年月日的顺序即可得出结果。

测试Result
Test test=new Test();
System.out.println(test.getDayOfWeek("2023/12/22"));
5
Test test=new Test();
System.out.println(test.getDayOfWeek("2023.1.11"));
3

 

class  Test {
    String getDayOfWeek(String date) {
        String cleanedDate = date.replaceAll("[^\\d]", "");
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        try {
            Date parsedDate = sdf.parse(cleanedDate);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(parsedDate);

            int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
            if (dayOfWeek == Calendar.SUNDAY) {
                dayOfWeek = 7;
            } else {
                dayOfWeek -= 1;
            }

            return String.valueOf(dayOfWeek);
        } catch (Exception e) {
            e.printStackTrace();
        }
return null;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值