首页 > 解决方案 > 如何在 Java 8 中格式化和比较 DateTime(如果一个日期为空)?

问题描述

如何使用 Java 8 修改以下日期比较,从而将整个这些方法减少为更少的行,其中也包括 Null Safety?

//Format and convert to date
private static Date handleDate(String dateInString) {
    if(dateInString == null) {
        return null;
    }
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
    try {
        return formatter.parse(dateInString);
    } catch (ParseException e) {
        e.printStackTrace();
        return null;
    }
}

//Checks if dates are equal
private static boolean dateEquals(Date date1, Date date2) {
    if (date1 == null && date2 != null) {
        return false;
    }
    if (date2 == null && date1 != null) {
        // We already have data, don't want null there then.
        return false;
    }

    if (date1 != null && date2 != null) {
        if(date1.equals(date2)) {
            return true;
        }
    }
    return false;
}

//Main
public static void main(String[] args) {

    Date current = handleDate("2019-09-02T00:00:00");
    Date existing = handleDate("2019-09-02T01:00:00");

    System.out.println(dateEquals(existing, current));

另外我不想进行空检查,那么有什么实用程序可以这样做吗?

标签: javadatedatetimejava-8

解决方案


对于容空比较:(java.util.Objects.equals(date1, date2)从 Java 7 开始)

对于格式化,我不知道有任何此类实用程序。


推荐阅读