java根据某天获取当前周的日期

本文介绍了一种使用Java代码确定给定日期所在周的开始和结束日期的方法。通过设置Calendar实例并调整其属性,可以准确计算出目标周的范围。此方法适用于需要按周进行数据统计或时间规划的应用场景。

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

  根据某天(2019-01-01)获取该日期所在周的日期         

            Calendar cal = Calendar.getInstance();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            cal.setTime(sdf.parse("2019-01-01"));
            // 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一  
            cal.setFirstDayOfWeek(Calendar.MONDAY);  
            // 判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了  
            int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天  
            if (1 == dayWeek) {  
               cal.add(Calendar.DAY_OF_MONTH, -1);  
            }  
            // 获得当前日期是一个星期的第几天  
            int day = cal.get(Calendar.DAY_OF_WEEK); 
            // 获取该周第一天
            cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
            String beginDate = sdf.format(cal.getTime());
            // 获取该周最后一天
            cal.add(Calendar.DATE, 6);
            String endDate = sdf.format(cal.getTime());

 

### 如何用Java获取某一的所有七天日期 为了实现这一目标,可以利用 `Calendar` 类或更现代的 `LocalDate` 和 `TemporalAdjusters` API 来操作日期。下面展示两种方法。 #### 方法一:使用 Calendar 类 这种方法适用于较旧版本的 Java 或者对于熟悉传统API 的开发者来说更为直观: ```java import java.util.Calendar; import java.text.SimpleDateFormat; public class WeekDates { public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar cal = Calendar.getInstance(); // 设置每的第一天为星期一 cal.setFirstDayOfWeek(Calendar.MONDAY); int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK); // 调整到本cal.add(Calendar.DATE, -(dayOfWeek - 2)); for (int i = 0; i < 7; ++i){ try{ System.out.println(sdf.format(cal.getTime())); } catch(Exception e){ e.printStackTrace(); } cal.add(Calendar.DATE, 1); } } } ``` 这段代码设置了每第一天为星期一[^4],并通过调整当前日期至最近的一个星期一开始遍历该内的每一天并打印出来。 #### 方法二:采用 LocalDate 及 TemporalAdjuster 接口(推荐) 此方式更加简洁明了,并且符合新的日期时间处理标准: ```java import java.time.DayOfWeek; import java.time.LocalDate; import java.time.temporal.TemporalAdjusters; public class GetWeekDays { public static void main(String[] args) { LocalDate today = LocalDate.now(); // 找到当期日期所在的第一个工作日(即一) LocalDate startOfWeek = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)); for(int i=0;i<7;++i){ System.out.println(startOfWeek.plusDays(i).toString()); } } } ``` 上述程序首先找到给定日期所在的那一中的第一个工作日——也就是最接近但不大于当天的那个一;接着循环增加一天直到覆盖整个星期共七个日子为止[^3]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风起未来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值