如何比较一串格式" 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的初学者。 如果由于我的知识有限,我要问一个重复的问题,非常抱歉
答案 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;
}
}