JAVA如何判断两天在同一周内


/**
* <pre>
* 判断date和当前日期是否在同一周内
* 注:
* Calendar类提供了一个获取日期在所属年份中是第几周的方法,对于上一年末的某一天
* 和新年初的某一天在同一周内也一样可以处理,例如2012-12-31和2013-01-01虽然在
* 不同的年份中,但是使用此方法依然判断二者属于同一周内
* </pre>
*
* @param date
* @return
*/
public static boolean isSameWeekWithToday(Date date) {

if (date == null) {
return false;
}

// 0.先把Date类型的对象转换Calendar类型的对象
Calendar todayCal = Calendar.getInstance();
Calendar dateCal = Calendar.getInstance();

todayCal.setTime(new Date());
dateCal.setTime(date);

// 1.比较当前日期在年份中的周数是否相同
if (todayCal.get(Calendar.WEEK_OF_YEAR) == dateCal.get(Calendar.WEEK_OF_YEAR)) {
return true;
} else {
return false;
}
}

[size=small]
如果前一年的某一天和下一年的某一天在同一周内,依然可以判断的出。周日和周六肯定不在同一周内,就是说一周的开始是周日,结束是周六
[/size]
判断两个日期是否在同一周,可以根据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、付费专栏及课程。

余额充值