【发布时间】:2019-04-08 04:57:20
【问题描述】:
我写了两个简单的函数来获取我在 MySQL 表中的日期值。开始日期和结束日期列都是 Date 数据类型。所以,在我的这两个函数中是这样的:
public Date get_startdate(long nodeid,String ts) {
try {
String sql="Select STARTDT FROM urllink WHERE URL='f0="+nodeid+"&ts="+ts + "'";
if (em == null) {
throw new Exception("could not found URL object.");
}
return (Date) em.createNativeQuery(sql).getSingleResult();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public Date get_enddate(long nodeid,String ts) {
try {
String sql="Select ENDDT FROM urllink WHERE URL='f0="+nodeid+"&ts="+ts + "'";
if (em == null) {
throw new Exception("could not found URL object.");
}
return (Date) em.createNativeQuery(sql).getSingleResult();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
现在我像这样在我的主页中调用这些函数,我想检查日期条件,如果 URL 在这两个日期之间,那么它应该是有效的并做一些事情。我在下面强调我的意思:
Date file_getstartdate=fileFacade1.get_startdate(fileID,hash);
Date file_getenddate=fileFacade1.get_enddate(fileID,hash);
String currentDate = CoreUtil.parseDate(new Date());
if( file_getstartdate<= currentDate<= file_getendDate){
//URL is valid, do something
}else {
//do nothing
}
我存储在表中的日期格式为YYYY-MM-DD,而我面临的问题是在上面的if 语句中进行比较。我不能使用这些运算符进行检查。有没有办法实现我的愿望?
【问题讨论】:
-
我建议你不要使用
Date,不管是java.sql.Date还是java.util.Date。这些课程设计不良且早已过时。而是使用来自java.time, the modern Java date and time API 的LocalDate。它有isAfter、isBefore和isEqual方法,可以满足您的需求。 -
我知道使用
localeDate,因为它更新且更新更多,但它仅在 Java 8 中可用。我记得你上次确实提供了一个替代解决方案,如果我记得的话,关于使用一些向后可移植性功能正确。 -
是的,java.time 已在 ThreeTen Backport 中向后移植到 Java 6 和 7。不幸的是,它没有与 Java Persistence 或 JDBC 集成,所以你必须做一些转换。
标签: java date-comparison date