使用java获取当前周的剩余日期

使用java获取当前周的剩余日期,java,date,Java,Date,我使用以下代码来获取当前日期和下一个日期 List<String> list=new ArrayList(); int nextWeekId=2; int currentWeekId=1; LocalDate localDate = LocalDate.now(); for (int i = 0; i < list.size(); i++) { if (i >= 7) { saveDetails(nextWeekId,list.get(i), j

我使用以下代码来获取当前日期和下一个日期

List<String> list=new ArrayList();
int nextWeekId=2;
int currentWeekId=1;

LocalDate localDate = LocalDate.now();
for (int i = 0; i < list.size(); i++) {
    if (i >= 7) {
        saveDetails(nextWeekId,list.get(i), java.sql.Date.valueOf(localDate.plusDays(i)));
    } else {
        saveDetails(currentWeekId, list.get(i), java.sql.Date.valueOf(localDate.plusDays(i)));
    }
}
List List=new ArrayList();
int-nextWeekId=2;
int currentWeekId=1;
LocalDate LocalDate=LocalDate.now();
对于(int i=0;i=7){
saveDetails(nextWeekId、list.get(i)、java.sql.Date.valueOf(localDate.plusDays(i));
}否则{
saveDetails(currentWeekId、list.get(i)、java.sql.Date.valueOf(localDate.plusDays(i));
}
}
我的
列表
大小将始终为
size=14
。本周应始终从周一开始。例如,我想知道今天是星期五,日期是2020-07-10。然后,我的系统将存储日期
2020-07-102020-07-112020-07-12
currentWeekId
的对比,并将完整的未来七天与
nextWeekId
的对比。
访问值的顺序无关紧要。

为了获得当前星期的剩余天数,您需要从当前日期迭代到下一个星期一,如下所示:

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;

public class Main {
    public static void main(String[] args) {
        LocalDate localDate = LocalDate.now();
        LocalDate firstDayOfNextWeek = localDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
        while (localDate.isBefore(firstDayOfNextWeek)) {
            System.out.println(localDate);
            localDate = localDate.plusDays(1);
        }
    }
}
输出:

2020-07-11
2020-07-12
[2020-07-11, 2020-07-12]
[2020-07-11, 2020-07-12]
[2020-07-13, 2020-07-14, 2020-07-15, 2020-07-16, 2020-07-17, 2020-07-18, 2020-07-19]
请注意,返回目标对象的副本,其中一个元素已更改;这是一个不可变的等价于JavaBean上的
set
方法

[更新]:下面给出的是另一种方法(Cortesy:)来实现这一点:

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        LocalDate localDate = LocalDate.now();
        LocalDate firstDayOfNextWeek = localDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
        List<LocalDate> remainingDays = localDate.datesUntil(firstDayOfNextWeek)
                .collect(Collectors.toList());
        System.out.println(remainingDays);
    }
}
查看以了解更多信息

[另一个更新]

发布此更新以帮助OP列出下周的所有天数:

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        LocalDate localDate = LocalDate.now();

        // Remaining days of the current week
        LocalDate firstDayOfNextWeek = localDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
        List<LocalDate> remainingDays = localDate.datesUntil(firstDayOfNextWeek).collect(Collectors.toList());
        System.out.println(remainingDays);

        // Days of next week
        LocalDate firstDayOfNextToNextWeek = firstDayOfNextWeek.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
        List<LocalDate> daysOfNextWeek = firstDayOfNextWeek.datesUntil(firstDayOfNextToNextWeek)
                .collect(Collectors.toList());
        System.out.println(daysOfNextWeek);
    }
}

检查开始日期是星期几,然后从那天循环到星期天

LocalDate date = LocalDate.of(2020, 7, 10);
List<LocalDate> thisWeek = new ArrayList<>();

int dayCount = 0;
for (int i = date.getDayOfWeek().getValue(); i <= DayOfWeek.SUNDAY.getValue(); i++) {
    thisWeek.add(date.plusDays(dayCount++));
}
LocalDate=LocalDate.of(2020,7,10);
ListThisWeek=新建ArrayList();
int dayCount=0;
对于(int i=date.getDayOfWeek().getValue();i这里有一种方法

LocalDate localDate = LocalDate.now();

List<LocalDate> dates = localDate
           .datesUntil(localDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY)))
           .collect(Collectors.toList());
        
System.out.println(dates);
你这样试试

LocalDate localDate = LocalDate.now();
// Current week dates
LocalDate nextWeekStart = localDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
List<LocalDate> currentWeekdays = localDate.datesUntil(nextWeekStart).collect(Collectors.toList());
// Next week dates
LocalDate nextWeekStart2 = nextWeekStart.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
List<LocalDate> nextWeekdays = nextWeekStart.datesUntil(nextWeekStart2).collect(Collectors.toList());
LocalDate LocalDate=LocalDate.now();
//当前星期日期
localdatenextweekstart=LocalDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
List currentWeekdays=localDate.datesUntil(nextWeekStart.collect)(Collectors.toList());
//下周的日期
localdatenextweekstart2=nextWeekStart.with(temporaladjusts.next(DayOfWeek.MONDAY));
List nextWeekdays=nextWeekStart.datesUntil(nextWeekStart2.collect(Collectors.toList());
//当前日期
LocalDate LocalDate=LocalDate.now();
//查找当天的名称
字符串dayOfWeek=localDate.getDayOfWeek().getDisplayName(TextStyle.SHORT\u独立,Locale.US);
//设置与当前日期的一周距离
LocalDate deadlineDate=LocalDate.now().plusDays(7);
//将日期添加到列表中,从当前日期到一周距离
列表日期=Stream.iterate(localDate,date->date.plusDays(7))
.limit(ChronoUnit.DAYS.between(localDate,deadlineDate))
.collect(Collectors.toList());
System.out.println(dates.size()+“从”+dayOfWeek开始完成订单的天数);//从Sat开始完成订单的7天
系统输出打印(日期);//[2020-07-112020-07-182020-07-252020-08-012020-08-082020-08-152020-08-22]

您可以使用下面给出的代码中的
getWeek
,对于本周,您需要通过1、下周2、下周3等等

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;

public class WeekDates {
    public static void main(String[] args) {
        System.out.println(getWeek(1));
        System.out.println(getWeek(2));
        System.out.println(getWeek(3));
    }

    public static List<LocalDate> getWeek(int week) {
        List<LocalDate> list = new ArrayList<>();
        LocalDate date = LocalDate.now();
        int days = 7 - date.getDayOfWeek().getValue() + 1;
        if (week != 1) {
            date = date.plusDays((week - 2) * 7 + days);
            days = 7;
        }
        for (int i = 0; i < days; i++) {
            list.add(date);
            date = date.plusDays(1);
        }
        return list;
    }
}
import java.time.LocalDate;
导入java.util.ArrayList;
导入java.util.List;
公共课工作日{
公共静态void main(字符串[]args){
系统输出打印项次(getWeek(1));
System.out.println(getWeek(2));
System.out.println(getWeek(3));
}
公共静态列表getWeek(整数周){
列表=新的ArrayList();
LocalDate=LocalDate.now();
int days=7-date.getDayOfWeek().getValue()+1;
如果(周!=1){
日期=日期加星期日((第2周)*7天以上);
天数=7天;
}
对于(int i=0;i
BTW…无需使用可怕的
java.sql.Date
类。从JDBC 4.2开始,我们可以直接与数据库交换java.time对象。请参阅PreparedStatement和ResultSet上的setObject和getObject方法。您的示例的剩余4天是什么?id=3?@厄立特里亚不,id将仅为1和2。剩余的将是丢弃。我会考虑使用<代码>周字段< /Case>对象,无论是代码>星期字段。ISO < /代码>或例如<代码>星期字段。(LoaLa.英国)< /C> >(这两个对象是相等的,BTW)。.@Arvind先生,它如何与我的解决方案相匹配?@Lily你的问题根本不清楚细节。这个答案为你指明了正确的方向,说明了如何通过使用
临时调整器来获得一系列日期。你需要编辑你的问题以保持清晰,或者应用此处显示的概念来设计你自己的解决方案@Lily-除了在这个答案中创建的列表之外,你还想创建另一个列表吗?如果你明确你还需要什么,我将能够帮助你。在本周,你的代码是完美的。但是我还想
保存下7个日期的详细信息。@Lily-我已经发布了一个更新。如果你还需要什么,请告诉我。先生,这是怎么可能的我的解决方案怎么样?
LocalDate localDate = LocalDate.now();
// Current week dates
LocalDate nextWeekStart = localDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
List<LocalDate> currentWeekdays = localDate.datesUntil(nextWeekStart).collect(Collectors.toList());
// Next week dates
LocalDate nextWeekStart2 = nextWeekStart.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
List<LocalDate> nextWeekdays = nextWeekStart.datesUntil(nextWeekStart2).collect(Collectors.toList());
    //curent day
    LocalDate localDate = LocalDate.now();

    // find name of the day
    String dayOfWeek = localDate.getDayOfWeek().getDisplayName(TextStyle.SHORT_STANDALONE , Locale.US);

    // set a week distance from current day
    LocalDate deadlineDate = LocalDate.now().plusDays(7);

    // add dates to a list from current day to a week distance 
    List<LocalDate> dates = Stream.iterate(localDate, date -> date.plusDays(7))
            .limit(ChronoUnit.DAYS.between(localDate, deadlineDate))
            .collect(Collectors.toList());

    System.out.println(dates.size() + " days to finish the order starting from " + dayOfWeek);  // 7 days to finish the order starting from Sat


    System.out.println(dates);  // [2020-07-11, 2020-07-18, 2020-07-25, 2020-08-01, 2020-08-08, 2020-08-15, 2020-08-22]
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;

public class WeekDates {
    public static void main(String[] args) {
        System.out.println(getWeek(1));
        System.out.println(getWeek(2));
        System.out.println(getWeek(3));
    }

    public static List<LocalDate> getWeek(int week) {
        List<LocalDate> list = new ArrayList<>();
        LocalDate date = LocalDate.now();
        int days = 7 - date.getDayOfWeek().getValue() + 1;
        if (week != 1) {
            date = date.plusDays((week - 2) * 7 + days);
            days = 7;
        }
        for (int i = 0; i < days; i++) {
            list.add(date);
            date = date.plusDays(1);
        }
        return list;
    }
}