Java中如何查找前2个星期一的日期?

可能是这样的:

for(int i=0;i<15;i++){ Calendar cal = new GregorianCalendar(); cal.add(Calendar.DAY_OF_MONTH, -1); if (cal.Calendar.DAY_OF_WEEK==1){ System.out.println(cal.cal.getTime()) 

但可能存在更简单的方法? 谢谢。

你走在正确的轨道上。

 Calendar cal = Calendar.getInstance(); cal.add(Calendar.DAY_OF_YEAR, -7); // First week before cal.add(Calendar.DAY_OF_YEAR, -7); // Second week before 

让我在星期一做这项工作。

 Calendar cal = Calendar.getInstance(); int weekday = cal.get(Calendar.DAY_OF_WEEK); int days = (Calendar.SATURDAY - weekday + 2) % 7; cal.add(Calendar.DAY_OF_YEAR, days); cal.add(Calendar.DAY_OF_MONTH, -7); cal.add(Calendar.DAY_OF_MONTH, -7); 

更简单的是直接设置工作日:

 Calendar cal = Calendar.getInstance(); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); cal.add(Calendar.DATE, -7); System.out.println(cal.getTime()); 

请记住,这不会影响时间。 如果你想要00:00,你需要设置适当的值:

 cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); 

java.time

使用TemporalAdjuster。

 LocalDate today = LocalDate.now(); LocalDate previousOrSameMonday = today.with( TemporalAdjusters.previousOrSame( DayOfWeek.MONDAY ) ); 

减去一周得到第二个。

 LocalDate secondMondayBefore = previousOrSameMonday.minusWeeks( 1 );