Java日期大小比較


前言

  在 Java 語言中,日期在計算機內部表示為(long型)時間點——自1970年1月1日以來經過的毫秒數。在開發中經常會用到日期的比較,像給定一個日期和當前日期進行比較,或者給定兩個日期進行時間先后的比較,還有取兩個日期之間的記錄等等。現在整理一下幾種方法。  

  先定義幾個日期,以便下文進行測試:

String beginTime = new String("2020-08-09 13:32:20"); String endTime = new String("2099-10-08 11:21:32"); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date beginDate = df.parse(beginTime); Date endDate = df.parse(endTime); LocalDate beginDateLoc = LocalDate.of(2020, 8, 9); LocalDate endDateLoc = LocalDate.of(2099, 10, 8);

LocalDate自帶方法isBefore、isAfter和isEqual

  使用JDK8新增的函數 isBefore()、isAfter()和isEqual()來比較 LocalDate、LocalTime 和 LocalDateTime,本文僅以LocalDate為例。

if (beginDateLoc.isBefore(endDateLoc)) { System.out.println("beginDate is before endDate"); } if (beginDateLoc.isAfter(endDateLoc)) { System.out.println("beginDate is after endDate"); } if (beginDateLoc.isEqual(endDateLoc)) { System.out.println("beginDate is equal to endDate"); }

 

LocalDate自帶方法compareTo

System.out.println(beginDateLoc.compareTo(endDateLoc)); endDateLoc = LocalDate.of(2020, 6, 18); System.out.println(beginDateLoc.compareTo(endDateLoc));

  compareTo(ChronoLocalDate other)方法用法描述:如果此 Date等於參數 other,則返回0;如果在 other之前,則返回小於 0 的值;否則,返回大於 0 的值。

 

Date自帶方法before和after比較

System.out.println(beginDate.before(endDate));
System.out.println(beginDate.after(endDate));
System.out.println(beginDate.equals(endDate));

  溫馨提示:日期格式必須一致。

把日期轉化成長整型進行比較

    /**
     * 功能描述:求兩個時間相減后的毫秒數。<br/>
     * 差格式化時間后,計算 endDt 減 beginDt 的秒數。<br/>
     * millDif >0 : endDt > beginDt
     *
     * @param beginDt 開始時間
     * @param endDt   結束時間
     * @return Long 時間差,單位:milliseconds
     */
    public static Long getMillSub(String beginDt, String endDt, String formatStr) {
        long millDif = 0;
        if (StringUtils.isBlank(formatStr)) {
            formatStr = "yyyy-MM-dd";
        }
        try {
            SimpleDateFormat df = new SimpleDateFormat(formatStr);
            Date beginDate = df.parse(beginDt);
            Date endDate = df.parse(endDt);
            millDif = endDate.getTime() - beginDate.getTime();
        } catch (Exception e) {
            log.error("日期轉換失敗,", e);
            return null;
        }
        return millDif;
    }

 

Calender自帶方法before()和after()

 Calendar 類也有 compareTo、equals、after 和 before 方法,工作方式與上面描述的 Date 類的方法類似。因此,如果日期信息保存在 Calendar 類中,則不需要提取日期進行比較。

        Calendar cal1 = Calendar.getInstance();
        Calendar cal2 = Calendar.getInstance();
        cal1.setTime(beginDate);
        cal2.setTime(endDate);

        if (cal1.after(cal2)) {
            System.out.println("beginTime is after endTime");
        }
        if (cal1.before(cal2)) {
            System.out.println("beginTime is before endTime");
        }
        if (cal1.equals(cal2)) {
            System.out.println("beginTime is equal to endTime");
        }

 

小結

   本文主要總結了在 Java 中比較日期的幾種常用方法,以提高自己實際操作的能力。

   文章到這里就結束了,看完之后你有什么想法想要跟大家分享呢?評論區在等着你!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM