Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中如何查找前两个星期一的日期?_Java_Date_Time - Fatal编程技术网

在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 );

这没有必要把星期一作为结果吗?这没有必要把星期一作为结果吗?