如何比较字符串格式的两个日期?
How to compare two dates in String format?
比较字符串格式的两个日期最简单的方法是什么?我需要知道 date1
是否出现 after/before date2
.
String date1 = "2015-12-01";
String date2 = "2015-12-31";
在这种情况下,您可以只比较字符串 date1.compareTo(date2)
。
编辑:但是,正确的方法是使用 SimpleDateFormat
:
DateFormat f = new SimpleDateFormat("yyyy-mm-dd");
Date d1 = f.parse(date1, new ParsePosition(0));
Date d2 = f.parse(date2, new ParsePosition(0));
然后比较日期:
d1.compareTo(d2);
如果 d1
在 d2
之前,比较将 return 为负值,如果 d1
在 d2
之后,则为正值。
对于更通用的方法,您可以将它们都转换为定义格式的 Date
对象,然后使用适当的方法:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = format.parse(date1);
Date date2 = format.parse(date2);
if (date1.compareTo(date2) <= 0) {
System.out.println("earlier");
}
使用 JodaTime,只需:
DateTime d1 = DateTime.parse(date1);
DateTime d2 = DateTime.parse(date2);
Assert.assertTrue(d1.isBefore(d2));
Assert.assertTrue(d2.isAfter(d1));
您可以简单地将字符串转换为日期:
Date date1 = sdf.parse("2015-12-01");
Date date2 = sdf.parse("2010-01-01");
然后比较是这样完成的:
如果(date1.after(日期 2)){
System.out.println("Date1 is after Date2");
}
if(date1.before(date2)){
System.out.println("Date1 is before Date2");
}
if(date1.equals(date2)){
System.out.println("Date1 is equal Date2");
}
如果我没记错的话,有一个 ParseException
需要处理
是的,你可以这样比较:
Date date1 = new Date();
Date date2 = new Date();
if(date1.before(date2)){
// statement
}
if(date1.after(date2)){
// statement
}
我建议您将它们转换为 Date
个对象。
String date1 = "2015-12-01";
String date2 = "2015-12-31";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf.parse(date1).before(sdf.parse(date2)));
像这样比较它们:
if(date2 .compareTo(date1) > 0){
System.out.println(" ---- ");
}
不是一个理想的选择(date1 和 date2 是字符串),因为它失去了灵活性并可能导致它自己的问题。
比较字符串格式的两个日期最简单的方法是什么?我需要知道 date1
是否出现 after/before date2
.
String date1 = "2015-12-01";
String date2 = "2015-12-31";
在这种情况下,您可以只比较字符串 date1.compareTo(date2)
。
编辑:但是,正确的方法是使用 SimpleDateFormat
:
DateFormat f = new SimpleDateFormat("yyyy-mm-dd");
Date d1 = f.parse(date1, new ParsePosition(0));
Date d2 = f.parse(date2, new ParsePosition(0));
然后比较日期:
d1.compareTo(d2);
如果 d1
在 d2
之前,比较将 return 为负值,如果 d1
在 d2
之后,则为正值。
对于更通用的方法,您可以将它们都转换为定义格式的 Date
对象,然后使用适当的方法:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = format.parse(date1);
Date date2 = format.parse(date2);
if (date1.compareTo(date2) <= 0) {
System.out.println("earlier");
}
使用 JodaTime,只需:
DateTime d1 = DateTime.parse(date1);
DateTime d2 = DateTime.parse(date2);
Assert.assertTrue(d1.isBefore(d2));
Assert.assertTrue(d2.isAfter(d1));
您可以简单地将字符串转换为日期:
Date date1 = sdf.parse("2015-12-01");
Date date2 = sdf.parse("2010-01-01");
然后比较是这样完成的: 如果(date1.after(日期 2)){ System.out.println("Date1 is after Date2"); }
if(date1.before(date2)){
System.out.println("Date1 is before Date2");
}
if(date1.equals(date2)){
System.out.println("Date1 is equal Date2");
}
如果我没记错的话,有一个 ParseException
需要处理
是的,你可以这样比较:
Date date1 = new Date();
Date date2 = new Date();
if(date1.before(date2)){
// statement
}
if(date1.after(date2)){
// statement
}
我建议您将它们转换为 Date
个对象。
String date1 = "2015-12-01";
String date2 = "2015-12-31";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf.parse(date1).before(sdf.parse(date2)));
像这样比较它们:
if(date2 .compareTo(date1) > 0){
System.out.println(" ---- ");
}
不是一个理想的选择(date1 和 date2 是字符串),因为它失去了灵活性并可能导致它自己的问题。