如何在Java中比较字符串格式的两个日期?
java.text.SimpleDateFormat中的 类用于格式化和解析字符串到日期和日期字符串。
此类的构造函数之一接受表示所需日期格式的String值并创建SimpleDateFormat对象。
将字符串解析/转换为Date对象通过传递所需的格式字符串实例化此类。
使用parse()方法解析日期字符串。
util.Date类表示特定的即时时间该类提供了before()、after()和equals()等各种方法来比较两个日期。
示例
从字符串创建日期对象后,您可以使用以下任一方法比较它们,如下所示-
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Demo { public static void main(String args[])throws ParseException { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-dd-MM"); String dateStr1 = "2007-11-25"; String dateStr2 = "1999-9-12"; //将给定的字符串解析为日期对象 Date date1 = formatter.parse(dateStr1); Date date2 = formatter.parse(dateStr2); Boolean bool1 = date1.after(date2); Boolean bool2 = date1.before(date2); Boolean bool3 = date1.equals(date2); if(bool1){ System.out.println(dateStr1+" 是在之后 "+dateStr2); }else if(bool2){ System.out.println(dateStr1+" 是之前 "+dateStr2); }else if(bool3){ System.out.println(dateStr1+" 等于 "+dateStr2); } } }
输出结果
2007-11-25 是在之后 1999-9-12
Parse()LocalDate类的方法
parse()LocalDate类的方法接受一个表示日期的String值并返回一个LocalDate对象。
示例
import java.time.LocalDate; public class Test { public static void main(String args[]){ String dateStr1 = "2007-11-25"; String dateStr2 = "1999-9-12"; LocalDate date1 = LocalDate.parse(dateStr1); LocalDate date2 = LocalDate.parse(dateStr1); Boolean bool1 = date1.isAfter(date2); Boolean bool2 = date1.isBefore(date2); Boolean bool3 = date1.isEqual(date2); if(bool1){ System.out.println(dateStr1+" 是在之后 "+dateStr2); }else if(bool2){ System.out.println(dateStr1+" 是之前 "+dateStr2); }else if(bool3){ System.out.println(dateStr1+" 等于 "+dateStr2); } } }
输出结果
2007-11-25 等于 1999-9-12