java判断两个时间是不是同一天的方法、Java中判断是否是当天时间

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。

                                                                              热爱技术的小郑

前言

开发中会遇到这样一个场景,一般交易发送会有一个流水。流水一般采用递增的形式、如果流水不做处理,随着时间的累积,流水会越来越大。为了避免流水过大、需要再新的一天重置流水【流水可以按照一定规则拼接】。

判断两个时间是否为同一天,即判断它们的年、月、日是否相同,可以利用Java中的日期类来实现。下面是两种方法。

获取当前日期

    /**
     * 获取当前时间  日期:20230912  年:2023  月:9  日:12
     */
    public static void testData02(){
    
    
        Date currentDate = new Date();
        //int currentYear = currentDate.getYear(); //该方法已经过时
        SimpleDateFormat ft = new SimpleDateFormat("yyyyMMdd");
        Calendar calender = Calendar.getInstance();
        calender.setTime(currentDate);
        String currentTime = ft.format(calender.getTime());
        int currentYear = calender.get(Calendar.YEAR);
        int currentMonth = calender.get(Calendar.MONTH)+1;
        int currentDay = calender.get(Calendar.DATE);
        System.out.println("日期:" + currentTime +" " + " 年:" + currentYear + " "
        + " 月:" + currentMonth + " " +" 日:" + currentDay);

    }

方法一【使用Calendar类】

我们通过获取两个时间实例的年、月、日信息来进行比较,如果三个信息相同,则认为这两个时间为同一天。

    /**
     * 方法一:使用Calendar类
     * 判断两个时间是否为同一天
     * @param date1 时间1
     * @param date2 时间2
     * @return 是否为同一天
     */
    public static boolean isSameDay1(Date date1, Date date2) {
    
    
        Calendar cal1 = Calendar.getInstance();
        cal1.setTime(date1);

        Calendar cal2 = Calendar.getInstance();
        cal2.setTime(date2);

        return cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR)
                && cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH)
                && cal1.get(Calendar.DAY_OF_MONTH) == cal2.get(Calendar.DAY_OF_MONTH);
    }

方法二【使用SimpleDateFormat类】

我们使用 SimpleDateFormat 类将日期格式化为 “yyyyMMdd” 格式,然后对比两个时间的字符串形式是否相等,来判断这两个时间是否为同一天

    /**
     * 方法二:使用SimpleDateFormat类
     * 判断两个时间是否为同一天
     * @param date1 时间1
     * @param date2 时间2
     * @return 是否为同一天
     */
    public static boolean isSameDay2(Date date1, Date date2) {
    
    
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        return sdf.format(date1).equals(sdf.format(date2));
    }

测试

    public static void main(String[] args) throws ParseException {
    
    
        CompareTimeisEquall.testData02();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd");

        Date date1 = sdf.parse("2021-07-01");
        Date date2 = sdf.parse("2021-07-01");
        Date date3 = sdf.parse("2021-07-02");
        Date date4 = sdf1.parse("20230912");
        Date date5 = sdf1.parse("20230912");
        Date date6 = sdf1.parse("20230911");


        // 方法一示例
        System.out.println(isSameDay1(date1, date2)); // true
        System.out.println(isSameDay1(date1, date3)); // false

        // 测试 20230912 类型的日期
        System.out.println(isSameDay1(date4, date5)); // true
        System.out.println(isSameDay1(date5, date6)); // false

        // 方法二示例
        System.out.println(isSameDay2(date1, date2)); // true
        System.out.println(isSameDay2(date1, date3)); // false
    }

猜你喜欢

转载自blog.csdn.net/weixin_43304253/article/details/132841776