java判断两个时间是不是同一天的方法、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类】

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

java 复制代码
    /**
     * 方法一:使用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" 格式,然后对比两个时间的字符串形式是否相等,来判断这两个时间是否为同一天

java 复制代码
    /**
     * 方法二:使用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));
    }

测试

java 复制代码
    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
    }
相关推荐
啦啦啦_99991 分钟前
6. AI面试题之 MCP
java
飞天小猪啊6 分钟前
Mybatis
java·spring·mybatis
Memory_荒年7 分钟前
分布式锁:当你的“锁”从部门会议室升级到公司全球预订系统
java·后端
yuyuxun111 分钟前
基于JSP购物网站系统的设计与实现 毕业设计-附源码03645
java·开发语言·python·django·flask·课程设计·pygame
几分醉意.16 分钟前
先发制人:用 Bright Data 抢先捕捉 TikTok 爆款内容(附实战案例)
java·大数据·人工智能
SuperherRo17 分钟前
JAVA攻防-Webshell免杀&JSP&JSPX脚本&URL类加载&远程分离&文件包含&工具特征消除
java·文件包含·webshell·url类加载·特征消除
毕设源码-钟学长19 分钟前
【开题答辩全过程】以 垃圾分类查询系统为例,包含答辩的问题和答案
java
returnthem36 分钟前
Docker练习
java·nginx·dubbo
2501_9403152637 分钟前
98验证二叉搜索树
java·数据结构·算法
xuhaoyu_cpp_java38 分钟前
JAVA线程安全类
java·开发语言