获取指定时间内指定星期几的所有日期
时间:2022-07-22
本文章向大家介绍获取指定时间内指定星期几的所有日期,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
输入开始时间,截止时间,星期几,三个参数,获取这两个日期之间指定星期几的日期
一. 参数声明:
LocalDate start = LocalDate.of(2020, 4, 1);
LocalDate end = LocalDate.of(2020, 5, 1);
int week = 1;
二. 测试:
/**
* 获取指定时间内星期几的所有日期
* @Author liuwenxu.com (2020-04-26)
*
* @param start 开始日期 2020-04-01
* @param end 截止日期 2020-05-01
* @param week 星期几 1
* @return ArrayList<LocalDate> [2020-04-06, 2020-04-13, 2020-04-20, 2020-04-27]
*/
public static List getWeekInTimes(LocalDate start, LocalDate end, int week) {
ArrayList<LocalDate> list = new ArrayList<>();
long days = ChronoUnit.DAYS.between(start, end);
log.info("[{}~{})之间共有:{}天", start, end, days);
Calendar startCalender = GregorianCalendar.from(start.atStartOfDay(ZoneId.systemDefault()));
for (int i = 0; i < days - 1; i++) {
startCalender.add(Calendar.DATE, 1);
if (startCalender.get(Calendar.DAY_OF_WEEK) == week + 1) {// 1代表周日,7代表周六
list.add(
LocalDateTime.ofInstant(
startCalender.toInstant(),
ZoneOffset.systemDefault()
).toLocalDate()
);
}
}
log.info("[{}~{})之间共有:{}个 星期{}", start, end, list.size(), week);
return list;
}
三. 结果
- [2020-04-01~2020-05-01)之间共有:30天
- [2020-04-01~2020-05-01)之间共有:4个 星期1
[2020-04-06, 2020-04-13, 2020-04-20, 2020-04-27]
四. 拓展
获取当月所有周末的日期
/**
* 获取当月的所有周末
* @Author liuwenxu.com (2020-04-26)
*
* @param year 2020
* @param month 4
* @return
*/
public static List getWeekendInMonth(int year, int month) {
List list = new ArrayList();
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);// 不设置的话默认为当年
calendar.set(Calendar.MONTH, month - 1);// 设置月份
calendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为当月第一天
int daySize = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);// 当月最大天数
for (int i = 0; i < daySize - 1; i++) {
calendar.add(Calendar.DATE, 1);//在第一天的基础上加1
int week = calendar.get(Calendar.DAY_OF_WEEK);
if (week == Calendar.SATURDAY || week == Calendar.SUNDAY) {// 1代表周日,7代表周六 判断这是一个星期的第几天从而判断是否是周末
list.add(year + "-" + month + "-" + calendar.get(Calendar.DAY_OF_MONTH));// 得到当天是一个月的第几天
}
}
return list;
}
结果:
[2020-4-4, 2020-4-5, 2020-4-11, 2020-4-12, 2020-4-18, 2020-4-19, 2020-4-25, 2020-4-26]
五. 附:代码原文件
Q.E.D.
- SQL语句大小写是否区分的问题,批量修改整个数据库所有表所有字段大小写
- CentOS 6.5 安装nginx 1.6.3
- C#创建数字证书并导出为pfx,并使用pfx进行非对称加解密
- MyBatis两张表字段名相同产生的问题
- mongo 3.0 备份和还原数据库 ,及too many positional arguments错误
- AngularJs HTTP响应拦截器实现登陆、权限校验
- C# 读写App.config配置文件的方法
- Golang语言社区--Go语言基础第四节类型
- Golang语言社区--go语言编写Web程序
- Golang语言社区--Go语言基础第五节流程控制
- (14)不同基因坐标转换-生信菜鸟团博客2周年精选文章集
- (15)基因组各种版本对应关系-生信菜鸟团博客2周年精选文章集
- go 并发处理脚本
- 生信菜鸟团博客2周年精选文章集(4)NCBI数据库的几个探索
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux Signal 一网打尽
- Day9 :变态跳台阶
- Day10 :矩形覆盖
- vue3.0新特性初体验(二)
- 数据结构算法操作试题(C++/Python)——有效的括号
- 数据结构算法操作试题(C++/Python)——合并两个有序链表
- Day11 :二进制中1的个数
- 数据结构算法操作试题(C++/Python)——括号生成
- 数据结构算法操作试题(C++/Python)——合并K个排序链表
- 数据结构算法操作试题(C++/Python)——删除排序数组中的重复项
- 数据结构算法操作试题(C++/Python)——k个一组翻转链表
- 数据结构算法操作试题(C++/Python)——移除元素
- 数据结构算法操作试题(C++/Python)——实现strStr()
- 数据结构算法操作试题(C++/Python)——两数相除
- JavaScript 测试系列实战(三):使用 Mock 模拟模块并处理组件交互