java 日期判断 给定日期是否为当天 一周7天以内 一周7天以外

public static boolean isToday(String validateDate){
final String format = "yyyy-MM-dd HH:mm:ss";
Date vDate  = null;
try {
vDate = str2Date(validateDate,format);
} catch (ParseException e) {
e.printStackTrace();
return false;
}
Date today = new Date();
today.setHours(23);
today.setMinutes(59);
today.setSeconds(59);
long diff = today.getTime()-vDate.getTime();
if(diff<0){
return false;
}else{
long days = diff/(1000*60*60*24); 
if(days==0){
return true;
}else{
return false;
}
}

}


/**
*距离当前时间七天之内的日期,和七天之外的日期
* @param dt
* @param type 
* type:1--7天之内的 
* type:2--7天之外的
* @return
*/
public static boolean getDayDiffFromToday(Date dt,int type){
Date today=new Date();
today.setHours(23);
today.setMinutes(59);
today.setSeconds(59);


long diff = today.getTime() - dt.getTime();
if(diff<0)diff=0;
long days = diff/(1000*60*60*24);


if(type==1 && days>0 && days<=7)return true;
if(type==2 && days>7)return true;


return false;


/**
* 将string 按指定格式转化为java.util.Date

* @param str
* @param format
* @return
* @throws ParseException
*/
public static Date str2Date(String str, String format)
throws ParseException {
if (str == null || "".equals(str)) {
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat(format);
return (Date) sdf.parse(str);
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
判断两个日期是否在同一周,可以根据ISO8601标准来计算。该标准定义了一周的第一为周一,最后一为周日,一年中的第一个完整周必须满足以下条件: 1. 它的第一必须是该年的第一或者该年的第一个周一 2. 它包含的数必须大于等于4 以此类推,每个周的起始日期为该周的周一,终止日期为该周的周日。因此,我们可以按照以下步骤判断两个日期是否在同一周内: 1. 计算两个日期是当年的第几(dayOfYear) 2. 计算出两个日期所在周的周一的日期(monday1, monday2),公式为: monday = date - (date.getDayOfWeek() - 1) 3. 判断两个日期所在周的周一是否相同,如果不同,则它们不在同一周 4. 如果两个日期所在周的周一相同,则判断它们距离周一的是否都小于7,如果都小于7,则它们在同一周,否则它们不在同一周。 以下是Java实现的代码示例: ```java import java.time.LocalDate; import java.time.temporal.ChronoUnit; public class DateUtils { public static boolean isSameWeek(LocalDate date1, LocalDate date2) { // 计算两个日期是当年的第几 int dayOfYear1 = date1.getDayOfYear(); int dayOfYear2 = date2.getDayOfYear(); // 计算出两个日期所在周的周一 LocalDate monday1 = date1.minusDays(date1.getDayOfWeek().getValue() - 1); LocalDate monday2 = date2.minusDays(date2.getDayOfWeek().getValue() - 1); // 判断两个日期所在周的周一是否相同 if (!monday1.equals(monday2)) { return false; } // 判断两个日期距离周一的是否都小于7 return Math.abs(dayOfYear1 - monday1.getDayOfYear()) < 7 && Math.abs(dayOfYear2 - monday2.getDayOfYear()) < 7; } } ``` 其中,date1和date2为两个LocalDate对象,返回值为布尔类型,表示它们是否在同一周内。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值