首页 > 如何跨年计算 两日期之间相隔的周数 with java8 time API

如何跨年计算 两日期之间相隔的周数 with java8 time API

如2015-12-01到2016-01-15隔了5周

if (oneday.isAfter(sratDate) && oneday.isBefore(endDate)) {

        TemporalField weekFields =WeekFields.of(Locale.getDefault()).weekOfWeekBasedYear();
            int startWeek = sratDate.get(weekFields);
            int oneWeek = oneday.get(weekFields);
            System.out.print(startWeek - oneWeek);
        }

===============================2016年9月版 分割线========================================
之前版本的我太simple了...最近再去研究了一下Java8的新时间API,发现更有简单的方式去处理

LocalDate localDate1 = LocalDate.parse("2015-12-01");
LocalDate localDate2 = LocalDate.parse("2016-01-15");
System.out.println(localDate1.until(localDate2, ChronoUnit.WEEKS));

这样就完了...用Temporal.unitl方法,这个方法就是计算两个Temporal之间TemporalUnit单位类型的距离的,LocalDate也是Temporal的一个实现类嘛,所以可以调用的,单位的话ChronoUnit是一个枚举,里面有很多可以选择的单位,可以计算其他时间距离

(p.s : Java8的时间API,抽象了时间的概念,用TemporalTemporalAccessor来定义了时间的基石,划分抽象了和基石相关的时间关系,时间单位TemporalUnit,时间字段TemporalField,时间量TemporalAmount,把这些抽象接口理顺了...会发现用Java8时间API几乎可以满足你任何时间计算,以上是个人理解,仅供参考)

==============================2015年11月版 分割线========================================
我看周数在java8的新API里用的不太多啊,基本都是什么算年,年月,算天的,下面有方法可以计算两个LocalDate之间的年数,月数和天数的,看能否对你有些帮助

这个Period对象里封装了两个LocalDate之间的一些时间数据,这个结果表示,当前这两个时间相差1个月零14天的

【热门文章】
【热门文章】