在Java中如何查找前两个星期一的日期?
可能是这样的:在Java中如何查找前两个星期一的日期?,java,date,time,Java,Date,Time,可能是这样的: 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
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.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);
更简单的方法是直接设置工作日:
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
使用临时调节器
LocalDate today = LocalDate.now();
LocalDate previousOrSameMonday = today.with( TemporalAdjusters.previousOrSame( DayOfWeek.MONDAY ) );
减去一周,得到第二个
LocalDate secondMondayBefore = previousOrSameMonday.minusWeeks( 1 );
java.time
使用临时调节器
LocalDate today = LocalDate.now();
LocalDate previousOrSameMonday = today.with( TemporalAdjusters.previousOrSame( DayOfWeek.MONDAY ) );
减去一周,得到第二个
LocalDate secondMondayBefore = previousOrSameMonday.minusWeeks( 1 );
这没有必要把星期一作为结果吗?这没有必要把星期一作为结果吗?