您的位置:首页 > 其它

关于两个日期的天数差(日期加减)

2017-04-12 00:00 218 查看
摘要: 日期对比(这里只对比日期,不是时间)

原文:https://my.oschina.net/gtwo/blog/877740

简述:
实体 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语句得到两个日期天数差:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息