简述:
实体 Article 中定义了属性private Timestamp publishTime;// 发布时间
所用数据库是mysql
需求:从数据库获取数据列表,筛选列表中 发布日期是过去七天内的数据
java
下面代码省略查找数据库的逻辑,只讲解求出两个时间的天数差
Timestamp nowTime = new Timestamp(System.currentTimeMillis());//当前时间(包含时分秒)
//省略了获取article的逻辑
int differDay = dateDifferent(nowTime, article.getPublishTime());//调用自定义方法,对比两个时间的天数差
//例如:
//发布时间为:2017-03-29 14:06:51
//当前时间为:2017-04-12 16:12:32
//differDay 结果:14
/**
* 获取两个日期的天数差(不考虑时间,只关心天数)
*/
public int dateDifferent(Date fDate, Date oDate){
Calendar aCalendar = Calendar.getInstance();
aCalendar.setTime(fDate);
int fDay = aCalendar.get(Calendar.DAY_OF_YEAR);
aCalendar.setTime(oDate);
int oDay = aCalendar.get(Calendar.DAY_OF_YEAR);
return fDay - oDay;
}
===============================================================
jsp页面,el表达式获取发布时间值,再进行时间的对比
思路:
获取当前时间--->转成当天零时零分零秒的时间
发布时间--->转成发布日期零时零分零秒的时间
再对比这个两个转换得到的时间
var publishDate = new Date("${article.publishTime}");//例如:2014-04-05 14:06:51.9
var isNew = compareT(publishDate) <= 7*24*60*60*1000;
//对比当前日期和发布时间,返回差值
function compareT(publishTime){
var dateStr = new Date().toLocaleDateString();//把 Date 对象的日期部分转换为字符串
var today = new Date(dateStr).getTime();//当前日期零时零分零秒:时间戳
var publishData = new Date(publishTime.toLocaleDateString()).getTime();
return today - publishData;//两个日期零时零分零秒 的时间戳差值
}
===============================================================
在mysql数据库中操作--使用DATEDIFF函数或TO_DAYS函数
参考下图sql语句得到两个日期天数差: