java获取某一天的一周时间

本文介绍如何使用Java的SimpleDateFormat和Calendar类来解析和格式化日期,以及如何根据给定日期生成所在周的开始和结束日期,并打印出一周内的所有日期。
	List<String> list = new ArrayList<String>();
		list.add("星期一");
		list.add("星期二");
		list.add("星期三");
		list.add("星期四");
		list.add("星期五");
		list.add("星期六");
		list.add("星期日");
	
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		 Calendar calendar = Calendar.getInstance();
		 //自定义时间
		String recipeTime = "2019-01-01";
		//现在时间
		//String  recipeTime=simpleDateFormat.format(new Date()); 
		 
		calendar.setTime(simpleDateFormat.parse(recipeTime));
		calendar.setFirstDayOfWeek(Calendar.MONDAY);
		int week = calendar.get(Calendar.DAY_OF_WEEK);
		if (1 == week) { 
			 calendar.add(Calendar.DAY_OF_MONTH, -1); 
		} 
		int getDayFirst =calendar.get(Calendar.DAY_OF_WEEK);
		calendar.add(Calendar.DATE, calendar.getFirstDayOfWeek() - getDayFirst);
		//本周星期一
		String beginDate = simpleDateFormat.format(calendar.getTime());
		//本周星期日
		calendar.add(Calendar.DATE, 6);
		String endDate = simpleDateFormat.format(calendar.getTime());
		for (int i = 0; i < list.size(); i++) {
			calendar.setFirstDayOfWeek(Calendar.MONDAY);
			 calendar.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
			 long time = calendar.getTimeInMillis() + 24*60*60*1000*i;
			 String sunday = simpleDateFormat.format(time);
			 System.out.println(sunday);
		}
### 如何用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]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值