java 使用LocalDate根据起始时间和结束时间算出周的列表
一般我们遇到数据统计中会遇到,按照每日数据,每周,每月成交量数据展示
/** * 周-数据统计 */ 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根据起始时间和结束时间算出周的列表相关推荐
- Java获取当日的起始时间和结束时间
//获取0点 public static Date getStartTime() {Calendar todayStart = Calendar.getInstance();todayStart.se ...
- R语言ggplot2可视化:可视化所有日期不同时段任务的持续时间、将持续时间绘制成一条线(起始时间到结束时间),y轴表示活动发生的日期,x轴表示以小时为单位的时间
R语言ggplot2可视化:可视化所有日期不同时段任务的持续时间.将持续时间绘制成一条线(起始时间到结束时间),y轴表示活动发生的日期,x轴表示以小时为单位的时间(duration of an act ...
- R语言ggplot2可视化:可视化所有日期不同时段任务的持续时间、将持续时间绘制成一条线(起始时间到结束时间),y轴表示活动发生的日期,x轴表示以小时为单位的时间、适应时间段跨越多天的情况
R语言ggplot2可视化:可视化所有日期不同时段任务的持续时间.将持续时间绘制成一条线(起始时间到结束时间),y轴表示活动发生的日期,x轴表示以小时为单位的时间.适应时间段跨越多天的情况(例如,当天 ...
- vue elementUI 时间控件优化 选择起始时间不能在结束时间之后,结束时间不能在起始时间之前
时间控件优化 elementUI 选择起始时间不能在结束时间之后,结束时间不能在起始时间之前 <el-form-item label="起始时间:" class=" ...
- 根据起始时间和结束时间得到期间所有的日期集合
/** * 根据起始时间和结束时间得到期间所有的日期集合 * * @param startTime 起始时间 * @param endTime 结束时间 * @return */private Lis ...
- 用moment获取一年内指定周的起始时间和结束时间、用户所选时间和前端传参时间不一致问题
问题1: 原代码: //所选周selectedWeek:{handler(){let selectedWeek = parseInt(this.selectedWeek.substring(1))// ...
- 计算起始时间与结束时间之间有哪些月份和周数
estLabourMonth() {const months = []const monthCol = []const start = new Date(this.form.project_start ...
- Java获取指定年月的开始时间和结束时间
文章目录 Java获取指定年月的开始时间和结束时间 Java获取指定年月的开始时间和结束时间 // 获取指定年指定月的开始天数和结束天数public static Map<String,Date ...
- mybatis date类型比较,起始时间或结束时间。
如果数据库是时间类型而且你传的值也是时间类型,可以直接比较. 2023-2-17 更新 可以起始时间和结束时间一起判断 <if test="startTime != null and ...
最新文章
- Go:分布式学习利器(1) -- 开发环境搭建 + 运行第一个go程序
- PyQt+Html+Js
- 设置固定长度_厂房及仓库常规消防系统设置!
- 利用OpenCV的SimpleBlobDetector检测图像的奇异区域(斑点)
- 分页携带请求参数_一个值得深思的小问题 请求中的参数值为空要不要携带该参数?...
- 基于边缘计算的实时绩效_基于绩效的营销中的三大错误
- python 波动率_旧文:历史波动率的计算 (Python)
- 你了解的工厂模式可能有误
- Android通知,PendingIntent示例
- java text to speech_Java TextToSpeech.speak方法代码示例
- 盘点CSV文件在Excel中打开后乱码问题的两种处理方法
- FreeWheel创始人/CTO于晶纯访谈:具备大局观方能洞若观火
- 【C语言】球从100米自由落下,每次落地后反跳回原高度的一半。当10次落地时,共经过多少米,第10次反弹多高。
- Visual Studio(VS) Code详解
- X86架构与Arm架构区别
- 非接环境(PPSE)和接触环境(PSE)的FCI有什么区别
- 【C 语言基础】C 世界函数的故事,今天带你详细了解各组件原理
- 用java代码写的段子_网上调侃程序员的段子
- 电脑版微信(版本3.2.1.141)无法使用内置浏览器
- centos 无法ping内网 Destination Host Unreachable