如何获得一周的日期(我知道周数)?
我知道一年中的周数,一周从星期日开始,然后是星期一,星期二……星期六。
既然我知道周数,那么通过使用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());