如何在Java中比较两个字符串日期?

2022-09-01 18:03:08

我有两个字符串格式的日期,如下所示 -

String startDate = "2014/09/12 00:00";

String endDate = "2014/09/13 00:00";

我想确保开始日期应该小于结束日期。开始日期不应大于结束日期。

如何比较这两个日期并相应地返回布尔值?


答案 1

将它们转换为实际对象,然后调用 。Datebefore

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd h:m");
System.out.println(sdf.parse(startDate).before(sdf.parse(endDate)));

回想一下,这将引发 一个 ,因此您应该在此代码块中捕获它,或者将其声明为作为方法签名的一部分被抛出。parseParseException


答案 2

这是一个完全有效的演示。有关日期格式,请参阅 - http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Dating {

    public static void main(String[] args) {

        String startDate = "2014/09/12 00:00";
        String endDate = "2014/09/13 00:00";

        try {
            Date start = new SimpleDateFormat("yyyy/MM/dd HH:mm", Locale.ENGLISH)
                    .parse(startDate);
            Date end = new SimpleDateFormat("yyyy/MM/dd HH:mm", Locale.ENGLISH)
                    .parse(endDate);

            System.out.println(start);
            System.out.println(end);

            if (start.compareTo(end) > 0) {
                System.out.println("start is after end");
            } else if (start.compareTo(end) < 0) {
                System.out.println("start is before end");
            } else if (start.compareTo(end) == 0) {
                System.out.println("start is equal to end");
            } else {
                System.out.println("Something weird happened...");
            }

        } catch (ParseException e) {
            e.printStackTrace();
        }

    }

}