比较" 2016-11-23 00:00:00.0"与"星期二11月23日00:00:00 UTC 2016"在Java中

时间:2016-12-03 19:13:50

标签: java date comparison

如何比较一串格式" Tue Nov 23 00:00:00 UTC 2016"来自PostgreSQL,在Java" Object cannot be converted to String"中有一个Date对象。 我搜索了不同的建议来解决这个问题,但仍然抛出String string = "2016-11-23 00:00:00"; DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S"); Date date2 = format.parse(string); 编译错误。

我试过

True

if (string = date)我需要Date date; 其中日期在程序前面定义为{{1}}

我是Java的初学者。 如果由于我的知识有限,我要问一个重复的问题,非常抱歉

2 个答案:

答案 0 :(得分:0)

以下代码可以比较两个日期对象:

  String string1 = "2016-11-23 00:00:00";
  DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  Date date1 = format.parse(string1);

   if(date1.equals(postgresDate)) { //postgresDate loaded from database
     //add your code
   }

注意:如果您需要parse字符串2016-11-23 00:00:00.0,那么您的日期格式应为yyyy-MM-dd HH:mm:ss.S

答案 1 :(得分:0)

据我了解您的要求,您希望以不同格式比较两个日期。 有多种方法可以做到这一点:

预防措施: 使用getTime()方法获取以毫秒为单位的时间并比较日期,这将比较毫秒精度的日期,这意味着03-12-2016 00-12-12  可以认为是不同的日期,因为一秒钟有1000毫秒。 所以03-12-2016 00-12-12 000和03-12-2016 00-12-12 500是getTime()方法的不同日期。

 public static void main(String args[])throws Exception{
  SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
  Date datePG = new Date();//sdf1.parse("2016-11-23 00:00:00.0");
  int i=0;
  System.out.println(datePG.getTime());//1480795729834
 while(i!=100000 ){
    i++;
 }
 Date dateObj= new Date(); 
 DateComparison dc= new DateComparison();
 System.out.println(dateObj.getTime());//1480795671755
}
  

while循环的目的是引入几毫秒的延迟。   你可以看到这里没有while循环,即没有延迟

public static void main(String args[])throws Exception{
    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
    Date datePG = new Date();//1480796286386
    Date dateObj= new Date();//1480796286386

}

这两个日期似乎相同。所以如果你打算使用getTime()进行比较,请小心。

方法1::使用getTime()方法。

  public class DateComparison   {
        public static void main(String args[])throws Exception{
           SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
           Date datePG = sdf1.parse("2016-11-23 00:00:00.0");
           Date dateObj= new Date();  
           if(datePG.getTime()== dateObj.getTime()){
           System.out.println("Comparison using getTime() : "+"true");
           }else{
           System.out.println("Comparison using getTime() : "+"false");
           }
           System.out.println("Comparison  equals method:                            "+datePG.equals(dateObj) );

 }

方法2::您可以将这两个日期转换为通用格式,然后您可以比较它们,例如,假设您只想比较yyyy-MM-dd格式的日期,那么您可以也使用equals()方法。这些日期用String转换然后进行比较。它也是比较日期的另一种方式。

 public static void main(String args[])throws Exception{
  SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
  Date datePG = sdf1.parse("2016-11-23 00:00:00.0");
  Date dateObj= new Date();  
  DateComparison dc= new DateComparison();
  System.out.println("Comparison using String and compareDatesCommonFormat method : "+dc.compareDatesCommonFormat(datePG, dateObj));
}
//to compare in form of string 
 public String compareDatesCommonFormat(Date date1 ,Date date2) throws   Exception{
    String val=null;
    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
    SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
    String str1=sdf1.format(date1);
    String str2=sdf1.format(date2);
    if(date1.equals(date2)){
    val="equal";
    }else{
     val="unequal";
    }
   return val;
  }
}