以字符串格式比较日期

2022-09-02 19:27:12

我得到两个日期作为字符串值,我想检查开始时间早于结束时间。我比较它们,因为它是,而不是使用它们转换为日期,如下所示:SimpleDateFormat

String startTime = "2013-01-02 14:25:56";
String endTime   = "2013-01-02 14:30:56";

if(endTime.compareTo(startTime) > 0){
    System.out.println("End time is greater than start time");
}

真的有必要将它们转换为日期并进行比较吗?我会错过什么吗?我做的对了吗?


答案 1

您将缺少的是日期实际上格式良好的验证。

如果日期的格式与您每次显示的格式完全相同,那么这将起作用。如果它有可能有所不同,那么解析和比较生成的对象将至少增加一些检查。Date

例如,如果两个日期中的一个恰好被格式化为或甚至包含一个无格式的日期,例如,那么您的代码将默默地假设一些顺序(很可能与实际顺序无关)并继续。它应该做的是通知用户(或日志文件,...)某些期望没有得到满足。2013.01.02 14:30:56yesterday


答案 2

真的有必要将它们转换为日期并进行比较吗?

如果您不必包含时区,并且可以确保始终具有此格式,则词法顺序将起作用。

我会错过什么吗?

你失去了灵活性

我做的对了吗?

这取决于观点。我在专门的搜索中使用类似的东西(仅出于性能原因)。通常我会转换为日期并比较这些对象。