我必须比较格式为 yyyy-MM-dd HH:mm:ss 的两个日期。我知道比较日期只能在日期之前或日期之后的方法。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentDateandTime = sdf.format(new Date());
String expiryTime = "2014-09-10 00:00:00";
但是,将日期和时间与当前日期和时间进行比较的最佳方法是什么。 就像我们有两个日期2014-09-10 00:00:00和当前日期的时间是2014-08-31 10:37:15。现在我们要比较它。我们如何做到这一点。
感谢任何帮助。
答案 0 :(得分:5)
使用SimpleDateFormat将日期字符串转换为java.util.Date
对象,并使用Date#after
或Date#before
方法比较这些日期对象。
在 java 8 中 - 使用新的Java Time API,使用DateTimeFormat
解析日期字符串并获取LocalDate
对象并进行比较。
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
final LocalDate dt1 = dtf.parseLocalDate(dateString1);
final LocalDate dt2 = dtf.parseLocalDate(dateString2);
final boolean check = dt1.isAfter(dt2);
if(check)
System.out.println(dt1 +" is after "+dt2);
else
System.out.println(dt2 +" is after "+dt1);
答案 1 :(得分:4)
如果我理解你要做什么,你想使用SimpleDateFormat
(并且你发布了一个好的模式)来将String
(s)解析为Date
(s )然后Date.before(Date)
。将它们组合成类似的东西,
DateFormat sdf = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
String firstStr = "2014-09-10 00:00:00";
String secondStr = "2014-08-31 10:37:15";
Date first = sdf.parse(firstStr);
Date second = sdf.parse(secondStr);
boolean before = (first.before(second));
System.out.printf("%s is before %s",
before ? firstStr : secondStr,
before ? secondStr : firstStr);
输出
2014-08-31 10:37:15 is before 2014-09-10 00:00:00
答案 2 :(得分:2)
try{
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
} catch (ParseException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
String str1 = "2014-09-10 00:00:00";
Date date1 = formatter.parse(str1);
String str2 = "2014-08-31 10:37:15";
Date date2 = formatter.parse(str2);
if (date1.compareTo(date2)<0)
{
System.out.println("date2 is Greater than my date1");
}