如何获得一周的日期(我知道周数)?

我知道一年中的周数,一周从星期日开始,然后是星期一,星期二……星期六。

既然我知道周数,那么通过使用Java代码获取特定周的日期的有效方法是什么?

如果您不想要外部库,只需使用日历。

SimpleDateFormat sdf = new SimpleDateFormat("MM dd yyyy"); Calendar cal = Calendar.getInstance(); cal.set(Calendar.WEEK_OF_YEAR, 23); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); System.out.println(sdf.format(cal.getTime())); 

纯Java 8 / java.time解决方案

基于此 :

 final long calendarWeek = 34; LocalDate desiredDate = LocalDate.now() .with(IsoFields.WEEK_OF_WEEK_BASED_YEAR, calendarWeek) .with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)); 

您可以使用joda时间库

 int weekNumber = 10; DateTime weekStartDate = new DateTime().withWeekOfWeekyear(weekNumber); DateTime weekEndDate = new DateTime().withWeekOfWeekyear(weekNumber + 1); 

你没有提到你确切需要什么样的返回类型,但这段代码应该对你有用。 sysouts和formatter只是为了显示结果。

 Calendar cal = Calendar.getInstance(); cal.setTime(new Date()); cal.set(Calendar.WEEK_OF_YEAR, 30); SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); System.out.println(formatter.format(cal.getTime())); cal.add(Calendar.DAY_OF_WEEK, 6); System.out.println(formatter.format(cal.getTime())); 

这个答案与其他答案非常相似。 但是,这里有:

 int year = 2018; int week = 27; int day = 1; //assuming week starts from sunday Calendar calendar = Calendar.getInstance(); calendar.setWeekDate(year, week, day); System.out.println(calendar.getTime());