Java 如何判断某个时间是否是当天

引言

在开发中,经常会遇到需要判断某个时间是否是当天的需求。比如,在一个社交应用中,用户发布了一条动态,我们需要判断该动态是在今天发布的还是之前的。本文将介绍如何使用Java来判断某个时间是否是当天,并给出相应的代码示例。

方案

方法一:比较日期字符串

一种简单的方法是将待判断的时间转化为日期字符串,然后比较日期字符串是否与当前日期字符串相等。

首先,我们需要获取当前日期的字符串表示形式。可以使用java.time.LocalDate类来获取当前日期,并使用java.time.format.DateTimeFormatter类将日期转化为字符串。以下是获取当前日期字符串的代码示例:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class DateUtils {
    public static String getCurrentDate() {
        LocalDate currentDate = LocalDate.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        return currentDate.format(formatter);
    }
}

然后,我们可以将待判断的时间转化为日期字符串,并与当前日期字符串进行比较。以下是判断某个时间是否是当天的代码示例:

public class DateUtils {
    // 省略获取当前日期的方法
    
    public static boolean isToday(String dateStr) {
        String currentDate = getCurrentDate();
        return currentDate.equals(dateStr);
    }
}

方法二:比较日期对象

另一种方法是将待判断的时间转化为日期对象,然后比较日期对象是否与当前日期对象相等。

同样地,我们需要获取当前日期对象。可以使用java.time.LocalDate类来获取当前日期。以下是获取当前日期对象的代码示例:

import java.time.LocalDate;

public class DateUtils {
    public static LocalDate getCurrentDate() {
        return LocalDate.now();
    }
}

然后,我们可以将待判断的时间转化为日期对象,并与当前日期对象进行比较。以下是判断某个时间是否是当天的代码示例:

import java.time.LocalDate;

public class DateUtils {
    // 省略获取当前日期对象的方法
    
    public static boolean isToday(LocalDate date) {
        LocalDate currentDate = getCurrentDate();
        return currentDate.equals(date);
    }
}

示例

下面的示例演示了如何使用上述两种方法判断某个时间是否是当天:

public class Main {
    public static void main(String[] args) {
        String dateStr = "2022-01-01";
        
        // 使用方法一:比较日期字符串
        boolean isToday1 = DateUtils.isToday(dateStr);
        System.out.println("方法一:比较日期字符串");
        System.out.println(dateStr + " 是否是当天:" + isToday1);
        
        // 使用方法二:比较日期对象
        LocalDate date = LocalDate.parse(dateStr);
        boolean isToday2 = DateUtils.isToday(date);
        System.out.println("方法二:比较日期对象");
        System.out.println(dateStr + " 是否是当天:" + isToday2);
    }
}

运行上述示例,输出结果如下:

方法一:比较日期字符串
2022-01-01 是否是当天:false
方法二:比较日期对象
2022-01-01 是否是当天:false

可以看到,上述示例都返回了false,因为日期字符串和日期对象都表示的是2022年1月1日,而当前日期是2022年2月28日,所以不是当天。

关系图

下面是本文所介绍的方案中的类之间的关系图:

erDiagram
    class DateUtils {
        getCurrentDate()
        isToday()
    }
    class Main {
        main()
    }
    class LocalDate {
        parse()
    }
    class DateTimeFormatter {
        ofPattern()
    }
    DateUtils -- LocalDate
    DateUtils -- DateTimeFormatter
    Main -- DateUtils
    Main -- LocalDate

状态图

下面是判断某个时间是否是当天的状态图:

stateDiagram
    [*] --> 判断
    判断 --> 是当天: true
    判断 --> 不是当天: false
    是当天 --> [*]
    不是当天 --> [*]

结论

本文介绍了如何使用Java来判断某个时间是否是当天。通过比较日期字符串或日期对象与当前日期字符串或日期对象