java - Java compareTo 日期不能相等
问题描述
我正在尝试比较 2 个日期,第一个日期来自 MySQL 数据库,第二个日期来自当前日期。
如下所示,数据库中有不同的日期
但问题是我得到了 3 个 if 语句,它们应该告诉我的程序数据库日期是在当前日期之前、之后还是等于当前日期。Before 和 After 语句应该可以工作,但它可以看到日期 2018-06-12 应该等于当前日期,因此它以“before 语句”结尾。
希望你能看到我做错了什么。
private static void Resetter() throws ParseException, SQLException {
String host = "****";
String username = "root";
String mysqlpassword = "";
//Querys
String query = "select * from accounts";
String queryy = "update accounts set daily_search_count = 0 where id = ?";
Connection con = DriverManager.getConnection(host, username, mysqlpassword);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(query);
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
dateFormat.setTimeZone( TimeZone.getTimeZone( "UTC" ));
Date currentDate = new Date();
while(rs.next()){
System.out.println(dateFormat.format(currentDate));
if (rs.getDate(5).compareTo(currentDate) > 0) {
// System.out.println("Database-date is after currentDate");
} else if (rs.getDate(5).compareTo(currentDate) < 0) {
// System.out.println("Database-date is before currentDate");
PreparedStatement updatexdd = con.prepareStatement(queryy);
updatexdd.setInt(1, rs.getInt(1));
int updatexdd_done = updatexdd.executeUpdate();
} else if (rs.getDate(5).compareTo(currentDate) == 0) {
// System.out.println("Database-date is equal to currentDate");
} else {
System.out.println("Any other");
}
}
}
解决方案
ResultSet#getDate
返回删除了时间部分的日期。实例化一个新Date
对象确实包含时间,因此您必须自己删除它。例如:
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Date currentDate = cal.getTime();
推荐阅读
- oracle - 如何解决 Oracle 18c APEX 中的 apex.ajax.clob 错误?
- javascript - 打算通过 html a 标签 href 使用 Chrome
- linkedin-api - Linkedin API v2 r_basicprofile
- scala - 如何使用 IntelliJ 为 Scala 分配更少的内存
- facebook - 使用图形 API 显示公共 Facebook 页面的事件
- kubernetes - Kubernetes PodDisruptionBudget、HorizontalPodAutoscaler 和 RollingUpdate 交互?
- vue.js - 如何在 vuejs 中的方法中访问 refs
- python-3.x - ModuleNotFoundError:没有名为“加密”的模块 ubuntu 18 python 3.6.7
- asp.net - 我需要像我们需要令牌一样验证 AuthenticationResult 的 UserInfo 吗?
- javascript - 带有两个真 (?) 条件运算符的 Javascript 三元运算符