比较两个日期是否与Java相同

时间:2014-01-29 22:44:56

标签: java

美好的一天,快速的问题,我试图比较两个日期是同一时区(城市)的同一天任何人都知道为什么下面的代码保持而另一个没有,似乎无法理解这是为什么。

SimpleDateFormat fmt = new SimpleDateFormat("EEE dd,MMM");
Date newparsetemp = fmt.parse(parsedate);
Date currentdateparse = fmt.parse(currentdate);


  if(currentdateparse.equals(newparsetemp)){
       //code executes
  }

但是如果我确实使用了这个,那么if条件不成立

SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMdd"); 
Date newparsetemp = fmt.parse(parsedate);
Date currentdateparse = fmt.parse(currentdate);

if(currentdateparse.equals(newparsetemp)){
   //does not 

  }

5 个答案:

答案 0 :(得分:2)

考虑使用Joda-TimeLocalDate

Date data1 = ...
Date date2 = ...
new LocalDate(date1).equals(new LocalDate(date2))

最好还是跳过Date并改用LocalDate

答案 1 :(得分:1)

格式化为字符串后比较是一件奇怪的事情。试试这个:

Calendar cal = GregorianCalendar.getInstance();
cal.setTime(parsedate);
Calendar cal2 = GregorianCalendar.getInstance();
cal2.setTime(currentdate);



cal2.set(Calendar.HOUR, 0);
cal2.set(Calendar.MINUTE, 0);
cal2.set(Calendar.SECOND, 0);
cal2.set(Calendar.MILLISECOND, 0);

cal.set(Calendar.HOUR, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);

System.out.println(cal.equals(cal2) ? "true" : "false");

您对时区的评论需要澄清。你的意思是说

  

比较不同时区的2个日期是否同一天?

答案 2 :(得分:0)

如果您的意思是“只比较星期几”,您是否尝试过比较Calendar.get(Calendar.DAY_OF_WEEK)的结果?

答案 3 :(得分:0)

您是否同意在同一个月和同一天的不同年份的两个不同日期可能与一周中的同一天相匹配?

并且两个不同的日期不可能匹配同一天,一个月和一年?

答案 4 :(得分:0)

我实际上已经在我的一个Android应用程序中完成了这个,

public boolean isSameDay(Event otherEvent) {
    if(otherEvent == null) return false;
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    try {
        Calendar otherEventDate = Calendar.getInstance();
        otherEventDate.setTime(format.parse(otherEvent.getStartTime()));
        Calendar thisEventDate = Calendar.getInstance();
        thisEventDate.setTime(format.parse(getStartTime()));
        return (otherEventDate.get(Calendar.DAY_OF_MONTH) == thisEventDate.get(Calendar.DAY_OF_MONTH) &&
                 otherEventDate.get(Calendar.DAY_OF_YEAR)  == thisEventDate.get(Calendar.DAY_OF_YEAR));
    } catch(ParseException e) {
        System.out.println(e.toString());
        e.printStackTrace();
    }
    return false;
}

这是我做的代码,我只是检查这两个事件是否在同一天发生。如果你想增加更多的精度,你只需要为自己添加它。