java如何查找startDate和endDate之间的每周日期传递字符串,如“Wed,Thu”,它是动态传递的
当我通过startDate和endDate传递一周中的某一天时,比如字符串“Mon,Tue,Wed,Thu,Fri,Sat,Sun”,那么我希望每周的日期基于startDate和endDate之间通过的一周中的某一天
天可以是从传入方法的整周或自定义日
一,。我的试用码
public List<LocalDate> getWeeklyDateByStringofDays(String DaysofWeek, LocalDate startDate, LocalDate endDate) {
List<String> daysOfWeekList = Arrays.asList(DaysofWeek.split(","));
// How can do it no idea
}
# 1 楼答案
您可以按如下方式操作:
输出:
注意:如果参数中的日期名称在任何情况下都可以是,请在上面给出的代码中将
date.format(dtf).equals(day)
替换为date.format(dtf).equalsIgnoreCase(day)
# 2 楼答案
将DaysOfWeek输入字符串解析为
List<DayOfWeek>
对象。例如,首先调用.split("\\s*,\\s*")
以获取包含Mon
、Tue
等内容的字符串数组将字符串
"Mon"
变成DayOfWeek.MONDAY
。见下文创建一个for循环,循环开始和结束之间的每个日期:
for (LocalDate d = start; d.isBefore(end); d = d.plusDays(1))
。每个日期,获取它代表的星期几,并检查它是否在您的列表中我如何将“Mon”转换为DOW。星期一
您可以制作自己的hashmap,将字符串映射到
DayOfWeek
值。或者,您可以依赖java的日期解析,但这有点棘手:当然,请注意您必须如何指定语言。毕竟,在整个地球上,有很多方式可以说“星期一”:
# 3 楼答案
你可以从
LocalDate
中以三个字母的格式(例如Mon
)获取DayOfWeek
,并在daysOfWeek
中检查包含内容并使用
Stream.iterate
在范围内迭代,如果LocalDate
中的DayOfWeek
包含在daysOfWeek
中,则过滤,然后在列表中收集localdates