有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java获取本地日期之间的日历周差异

我很难找到一个解决问题的方法

Get day difference and divide by 7

我希望得到两个日期之间日历周的差异,星期从星期一开始

例如,2019年11月4日至2019年11月10日之间的周数应为0

但是,2019年11月10日至2019年11月11日之间的周数应为1周

解决方案还应考虑不同年份的日期。有没有使用LocalDate的解决方案


共 (3) 个答案

  1. # 1 楼答案

    我会从一个已知的星期一开始计算从那时开始的一周数。 1962年1月1日是星期一(其他星期一可用)

    LocalDate knownMonday = LocalDate.of(1962,1,1);
    LocalDate start = LocalDate.of(2019, 11, 10);
    LocalDate end   = LocalDate.of(2019, 11, 11);
    long sWeek = (long)Math.floor(knownMonday.until(start,ChronoUnit.DAYS)/7.0);
    long lWeek = (long)Math.floor(knownMonday.until(end  ,ChronoUnit.DAYS)/7.0);
    System.out.println(lWeek-sWeek);
    
  2. # 2 楼答案

    ChronoUnita ^{} method返回开始和结束日期/时间之间的完整单元数。要计算周一到周日的周数,您可以将日期“四舍五入”到上一个周一。在您的情况下,它可能如下所示:

    LocalDate start = LocalDate.of(2019, 11, 10);
    LocalDate end = LocalDate.of(2019, 11, 11);
    
    LocalDate mondayStart = start.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
    LocalDate mondayEnd = end.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
    
    System.out.println(ChronoUnit.WEEKS.between(mondayStart, mondayEnd));
    
  3. # 3 楼答案

    使用gregorianalendar。它有以周为单位计算差异的方法