gpt4 book ai didi

java - 比较java中的两个日期类型变量

转载 作者:行者123 更新时间:2023-11-30 09:30:03 25 4
gpt4 key购买 nike

我在比较两种数据类型 Variable -> java.sql.Date type 时发现了一些问题。

首先,我正在创建当前数据 (yyyy-mm-dd):

java.util.Date date = new java.util.Date();

java.sql.Date dateSql = new Date(date.getTime());

其次,我从 MySQL 接收数据:

MyDataEntity myDataEntity = session.getNamedQuery(MyDataEntity.GET_ELEMENT).uniqueResult();

然后我尝试比较两个日期:

if(dataSql != myDataEntity.getDate()){
System.out.println("different");
}else{
System.out.println("these same");
}

结果是,这两个日期总是不同的。但是当我打印这两个数据的值时,我得到了这些相同的值:

System.out.println(dataSql);
System.out.println(myDataEntity.getDate);

效果:

2012-11-16
2012-11-16

但是,我发现了一个问题:

如果我做:

long date1 = dateSql.getTime();  // print 1353106800000
long date2 = myDataEntity.getDate().getTime(); // print 1353234605091

那么如何比较两个日期 (yyyy-mm-dd) 呢?

最佳答案

首先,使用.equals(..)比较非原始对象——someDate.equals(anotherDate)

使用 == 比较它们的 jvm 标识——即它们是否是堆上的同一个对象,而不是它们的值。

然后确保你比较的是正确的东西——你想要相等的日期,那么你应该舍弃小时、分钟和天。为此,您可以使用:

  • 减去毫秒的数学
  • java.util.Calendar.set(..) 方法。
  • joda-time DateMidnight - 最佳选择

关于java - 比较java中的两个日期类型变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13439311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com