Java 获取输入年份和周数的开始日期和结束日期

private static String getWeeksStarAndEnd(Integer year,Integer weekNumber) {
   String str = "";
   if(year == null){
      str = "";
      return str;
   }
   if(weekNumber == null){
      str = "";
      return str;
   }
   WeekFields weekFields = WeekFields.of(Locale.getDefault());
   LocalDate startDate =  LocalDate.ofYearDay(year, 1)
         .with(TemporalAdjusters.firstInMonth(DayOfWeek.SUNDAY)).plusWeeks(weekNumber - 1);

   LocalDate endDate = startDate.plusDays(6);

   int startyear = startDate.getYear();
   int endyear = endDate.getYear();
   if(startyear != endyear){
      int startMonth = startDate.getMonthValue();
      int endMonth = endDate.getMonthValue();
      //最后一周如果跨年,就取最后一天拼接
      if(startMonth == 12 && startyear == year){
         //获取输入年份的最后一天作为结束日期
         LocalDate lastDayOfYear = LocalDate.of(year, 12, 31);
         str = startDate + " To " + lastDayOfYear;

      }else if(endMonth == 1 && startyear != year){
         //第一周跨年的情况,取第一天和往后7天
         LocalDate firstDayOfYear = LocalDate.of(year, 1, 1);
         LocalDate endDayOfFirstDayOfYear = firstDayOfYear.plusDays(6);
         str = firstDayOfYear + " To " + endDayOfFirstDayOfYear;
      }
   }else{
      int firstMonth = startDate.getMonthValue();
      int firstDate = startDate.getDayOfMonth();
      if(firstMonth == 1 && firstDate != 1 && weekNumber ==1){
         LocalDate firstDayOfYear = LocalDate.of(year, 1, 1);
         LocalDate endDayOfFirstDayOfYear = firstDayOfYear.plusDays(6);
         str = firstDayOfYear + " To " + endDayOfFirstDayOfYear;
      }else{
         str = startDate + " To " + endDate;
      }

   }

   return str;
}
  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值