【问题标题】:Comparing "2016-11-23 00:00:00.0" with "Tue Nov 23 00:00:00 UTC 2016" in Java在 Java 中比较“2016-11-23 00:00:00.0”与“2016 年 11 月 23 日星期二 00:00:00 UTC 2016”
【发布时间】:2016-12-03 19:13:49
【问题描述】:

如何将来自 PostgreSQL 的格式字符串“2016-11-23 00:00:00.0”与 Java 中的日期对象“Tue Nov 23 00:00:00 UTC 2016”进行比较。 我搜索了不同的建议来解决这个问题,但仍然抛出Object cannot be converted to Stringcompilation 错误。

我试过了

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;

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

【问题讨论】:

  • 您的格式错误。 ss.S 搞砸了。将格式改为"yyyy-MM-dd HH:mm:ss"。
  • 你能展示你所有的代码吗?您发布的代码编译得很好。
  • 尝试将“yyyy-MM-dd HH:mm:ss.S”替换为“yyyy-MM-dd HH:mm:ss”。
  • 我的代码如下Date date; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S"); int i =0; for (int d = 0; d < days; d++) { date = DateUtility.addNDaysToDate(from, d); System.out.println( ob1[0][i] + "-------------" + sdf.format(date)); if (ob1[0][i] == sdf.format(date)) { System.out.println("Success"); arr2[d] = 0; i=i+1; } else { System.out.println("Failed"); }
  • 你是怎么得到这个字符串的?你打电话给resultSet.getString()了吗?您可以直接调用 resultSet.getTimestamp() 并比较您的两个 Date 对象。

标签: java date comparison


【解决方案1】:

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

  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

【讨论】:

    【解决方案2】:

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

    注意事项: 使用 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() 进行比较,请小心。

    方法一::使用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) );
    
     }
    

    方法二::你可以把两个日期都转换成一个通用格式,然后你可以比较它们,例如假设你想只比较 yyyy-MM-dd 格式的日期,那么你可以也使用 equals() 方法。这里将日期转换为字符串,然后进行比较。这也是比较日期的另一种方式。

     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;
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-12-16
      • 2020-12-03
      • 1970-01-01
      • 1970-01-01
      • 2016-05-25
      • 2017-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多