一般我们遇到数据统计中会遇到,按照每日数据,每周,每月成交量数据展示

/**
 * 周-数据统计
 */
public class Week implements Serializable{/** 日期(2018-06-01~2018-06-10) **/
    private String day;/** 开始日期 **/
    private LocalDate startTime;/** 结束日期 **/
    private LocalDate endTime;/** 开始日期数字化 **/
    private Integer startTimeNumber;/** 结束日期数字化 **/
    private Integer endTimeNumber;
   //提供get和set方法

}

/**
 * 根据开始时间
 * @param startTime
 * @param endTime
 * @return
 */
public static List<Week> getWeekList(LocalDate startTime, LocalDate endTime) {List<Week> resultList = new ArrayList<Week>();DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMMdd");//判断是否同一周
    WeekFields weekFields = WeekFields.of(DayOfWeek.MONDAY,4);if(startTime.get(weekFields.weekOfWeekBasedYear()) == endTime.get(weekFields.weekOfWeekBasedYear())){Week firstWeek = new Week();firstWeek.setDay(startTime + "~" + endTime);firstWeek.setStartTime(startTime);firstWeek.setEndTime(endTime);firstWeek.setStartTimeNumber(Integer.valueOf(df.format(startTime)));firstWeek.setEndTimeNumber(Integer.valueOf(df.format(endTime)));resultList.add(firstWeek);return resultList;}//开始周
    TemporalAdjuster FIRST_OF_WEEK = TemporalAdjusters.ofDateAdjuster(localDate -> localDate.minusDays(localDate.getDayOfWeek().getValue() - DayOfWeek.MONDAY.getValue()));LocalDate startFirstWeek = startTime.with(FIRST_OF_WEEK);  //开始周开始日期
    TemporalAdjuster LAST_OF_WEEK = TemporalAdjusters.ofDateAdjuster(localDate -> localDate.plusDays(DayOfWeek.SUNDAY.getValue() - localDate.getDayOfWeek().getValue()));LocalDate endFirstWeek = startTime.with(LAST_OF_WEEK);     //开始周结束日期


    //结束周
    TemporalAdjuster FIRST_OF_WEEK1 = TemporalAdjusters.ofDateAdjuster(localDate -> localDate.minusDays(localDate.getDayOfWeek().getValue() - DayOfWeek.MONDAY.getValue()));LocalDate startLastWeek = endTime.with(FIRST_OF_WEEK1);TemporalAdjuster LAST_OF_WEEK1 = TemporalAdjusters.ofDateAdjuster(localDate -> localDate.plusDays(DayOfWeek.SUNDAY.getValue() - localDate.getDayOfWeek().getValue()));LocalDate endLastWeek = endTime.with(LAST_OF_WEEK1);//将第一周添加
    Week firstWeek = new Week();firstWeek.setDay(startTime + "~" + endFirstWeek);firstWeek.setStartTime(startTime);firstWeek.setEndTime(endFirstWeek);firstWeek.setStartTimeNumber(Integer.valueOf(df.format(startTime)));firstWeek.setEndTimeNumber(Integer.valueOf(df.format(endFirstWeek)));resultList.add(firstWeek);while (true) {startFirstWeek = startFirstWeek.plusDays(7);if (startFirstWeek.with(LAST_OF_WEEK).equals(startLastWeek.with(LAST_OF_WEEK1))) {break;} else {Week week = new Week();week.setDay(startFirstWeek.with(FIRST_OF_WEEK) + "~" + startFirstWeek.with(LAST_OF_WEEK));week.setStartTime(startFirstWeek.with(FIRST_OF_WEEK));week.setEndTime(startFirstWeek.with(LAST_OF_WEEK));week.setStartTimeNumber(Integer.valueOf(df.format(startFirstWeek.with(FIRST_OF_WEEK))));week.setEndTimeNumber(Integer.valueOf(df.format(startFirstWeek.with(LAST_OF_WEEK))));resultList.add(week);//System.out.println("日期="+startFirstWeek+"开始周="+startFirstWeek.with(FIRST_OF_WEEK)+"结束周="+startFirstWeek.with(LAST_OF_WEEK));
        }}Week lastWeek = new Week();lastWeek.setDay(startLastWeek + "~" + endTime);lastWeek.setStartTime(startLastWeek);lastWeek.setEndTime(endTime);lastWeek.setStartTimeNumber(Integer.valueOf(df.format(startLastWeek)));lastWeek.setEndTimeNumber(Integer.valueOf(df.format(endTime)));resultList.add(lastWeek);return resultList;
}

结果是:

日期=2018-05-02~2018-05-06开始周=2018-05-02结束周=2018-05-06开始时间戳=20180502结束时间戳=20180506
日期=2018-05-07~2018-05-13开始周=2018-05-07结束周=2018-05-13开始时间戳=20180507结束时间戳=20180513
日期=2018-05-14~2018-05-20开始周=2018-05-14结束周=2018-05-20开始时间戳=20180514结束时间戳=20180520
日期=2018-05-21~2018-05-27开始周=2018-05-21结束周=2018-05-27开始时间戳=20180521结束时间戳=20180527
日期=2018-05-28~2018-06-03开始周=2018-05-28结束周=2018-06-03开始时间戳=20180528结束时间戳=20180603
日期=2018-06-04~2018-06-10开始周=2018-06-04结束周=2018-06-10开始时间戳=20180604结束时间戳=20180610
日期=2018-06-11~2018-06-17开始周=2018-06-11结束周=2018-06-17开始时间戳=20180611结束时间戳=20180617
日期=2018-06-18~2018-06-24开始周=2018-06-18结束周=2018-06-24开始时间戳=20180618结束时间戳=20180624
日期=2018-06-25~2018-06-30开始周=2018-06-25结束周=2018-06-30开始时间戳=20180625结束时间戳=20180630

2.根据LocalDate时间查询当月第一天和最后一天

LocalDate firstDay = LocalDate.now().with(TemporalAdjusters.firstDayOfMonth());
LocalDate lastDay = LocalDate.now().with(TemporalAdjusters.lastDayOfMonth());
System.out.println("当月第一天="+firstDay);
System.out.println("当月最后一天="+lastDay);
结果是:
当月第一天=2018-06-01
当月最后一天=2018-06-30

java 使用LocalDate根据起始时间和结束时间算出周的列表相关推荐

  1. Java获取当日的起始时间和结束时间

    //获取0点 public static Date getStartTime() {Calendar todayStart = Calendar.getInstance();todayStart.se ...

  2. R语言ggplot2可视化:可视化所有日期不同时段任务的持续时间、将持续时间绘制成一条线(起始时间到结束时间),y轴表示活动发生的日期,x轴表示以小时为单位的时间

    R语言ggplot2可视化:可视化所有日期不同时段任务的持续时间.将持续时间绘制成一条线(起始时间到结束时间),y轴表示活动发生的日期,x轴表示以小时为单位的时间(duration of an act ...

  3. R语言ggplot2可视化:可视化所有日期不同时段任务的持续时间、将持续时间绘制成一条线(起始时间到结束时间),y轴表示活动发生的日期,x轴表示以小时为单位的时间、适应时间段跨越多天的情况

    R语言ggplot2可视化:可视化所有日期不同时段任务的持续时间.将持续时间绘制成一条线(起始时间到结束时间),y轴表示活动发生的日期,x轴表示以小时为单位的时间.适应时间段跨越多天的情况(例如,当天 ...

  4. vue elementUI 时间控件优化 选择起始时间不能在结束时间之后,结束时间不能在起始时间之前

    时间控件优化 elementUI 选择起始时间不能在结束时间之后,结束时间不能在起始时间之前 <el-form-item label="起始时间:" class=" ...

  5. 根据起始时间和结束时间得到期间所有的日期集合

    /** * 根据起始时间和结束时间得到期间所有的日期集合 * * @param startTime 起始时间 * @param endTime 结束时间 * @return */private Lis ...

  6. 用moment获取一年内指定周的起始时间和结束时间、用户所选时间和前端传参时间不一致问题

    问题1: 原代码: //所选周selectedWeek:{handler(){let selectedWeek = parseInt(this.selectedWeek.substring(1))// ...

  7. 计算起始时间与结束时间之间有哪些月份和周数

    estLabourMonth() {const months = []const monthCol = []const start = new Date(this.form.project_start ...

  8. Java获取指定年月的开始时间和结束时间

    文章目录 Java获取指定年月的开始时间和结束时间 Java获取指定年月的开始时间和结束时间 // 获取指定年指定月的开始天数和结束天数public static Map<String,Date ...

  9. mybatis date类型比较,起始时间或结束时间。

    如果数据库是时间类型而且你传的值也是时间类型,可以直接比较. 2023-2-17 更新 可以起始时间和结束时间一起判断 <if test="startTime != null and ...

最新文章

  1. Go:分布式学习利器(1) -- 开发环境搭建 + 运行第一个go程序
  2. PyQt+Html+Js
  3. 设置固定长度_厂房及仓库常规消防系统设置!
  4. 利用OpenCV的SimpleBlobDetector检测图像的奇异区域(斑点)
  5. 分页携带请求参数_一个值得深思的小问题 请求中的参数值为空要不要携带该参数?...
  6. 基于边缘计算的实时绩效_基于绩效的营销中的三大错误
  7. python 波动率_旧文:历史波动率的计算 (Python)
  8. 你了解的工厂模式可能有误
  9. Android通知,PendingIntent示例
  10. java text to speech_Java TextToSpeech.speak方法代码示例
  11. 盘点CSV文件在Excel中打开后乱码问题的两种处理方法
  12. FreeWheel创始人/CTO于晶纯访谈:具备大局观方能洞若观火
  13. 【C语言】球从100米自由落下,每次落地后反跳回原高度的一半。当10次落地时,共经过多少米,第10次反弹多高。
  14. Visual Studio(VS) Code详解
  15. X86架构与Arm架构区别
  16. 非接环境(PPSE)和接触环境(PSE)的FCI有什么区别
  17. 【C 语言基础】C 世界函数的故事,今天带你详细了解各组件原理
  18. 用java代码写的段子_网上调侃程序员的段子
  19. 电脑版微信(版本3.2.1.141)无法使用内置浏览器
  20. centos 无法ping内网 Destination Host Unreachable

热门文章

  1. 向华为学习集成供应链管理:让产供销协同起来的供应链计划管理
  2. 使用TIM捕获测量PWM频率和占空比
  3. PTA python 币值转换 ,逆序数
  4. 横向扩展与纵向扩展区别详解
  5. [rust-003] rust by example学习过程点点滴滴杂记
  6. CentOS7用YUM方式安装MySQL5.7
  7. 算法学习18-两个单链表相交的一系列问题
  8. 初步使用计算机的教学反思,静夜思教学反思(精选10篇)
  9. 字节跳动全员降薪17%,员工都「炸锅了」
  10. 基于OTSU最大类间方差法的ROI分割、提取图像中的形状特征--面积、周长、离心率、zernike矩