java 获取几天前和几天后的时间

本文介绍了一组实用的日期操作方法,包括获取指定日期前后若干天的日期、初始化当天时间范围及判断两个日期是否为同一天、昨天或更早。这些方法使用Java实现,并通过具体示例说明了如何进行日期比较。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
* 得到几天前的时间
* @param d
* @param day
* @return
*/
public static Date getDateBefore(Date d,int day){
Calendar now =Calendar.getInstance();
now.setTime(d);
now.set(Calendar.DATE,now.get(Calendar.DATE)-day);
return now.getTime();
}

/**
* 得到几天后的时间
* @param d
* @param day
* @return
*/
public static Date getDateAfter(Date d,int day){
Calendar now =Calendar.getInstance();
now.setTime(d);
now.set(Calendar.DATE,now.get(Calendar.DATE)+day);
return now.getTime();
}

/**
*获取今天的时间的凌晨 到 23点
*
*/
private void initTime(){
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
this.startTime=sdf.format(cal.getTime())+" 00:00:00";
this.endTime=sdf.format(cal.getTime())+" 23:59:59";
}



//判断是不是昨天.同一天,前天

/**
* @author LuoB.
* @param oldTime 较小的时间
* @param newTime 较大的时间 (如果为空 默认当前时间 ,表示和当前时间相比)
* @return -1 :同一天. 0:昨天 . 1 :至少是前天.
* @throws ParseException 转换异常
*/
private int isYeaterday(Date oldTime,Date newTime) throws ParseException{
if(newTime==null){
newTime=new Date();
}
//将下面的 理解成 yyyy-MM-dd 00:00:00 更好理解点
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String todayStr = format.format(newTime);
Date today = format.parse(todayStr);
//昨天 86400000=24*60*60*1000 一天
if((today.getTime()-oldTime.getTime())>0 && (today.getTime()-oldTime.getTime())<=86400000) {
return 0;
}
else if((today.getTime()-oldTime.getTime())<=0){ //至少是今天
return -1;
}
else{ //至少是前天
return 1;
}

}


//判断是不是今天

private boolean isToday(Date time){
try {
Date nowTime=new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String todayStr = format.format(nowTime);
Date today = format.parse(todayStr);
long starttime=today.getTime();
long endtime=today.getTime()+86400000;
if(starttime<=time.getTime() && time.getTime()<=endtime){
return true;
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值