gpt4 book ai didi

java.time - 是否有一个函数可以查找两天之间特定日期(一周中的某一天或一个月中的某一天)的数字?

转载 作者:行者123 更新时间:2023-12-02 08:56:12 25 4
gpt4 key购买 nike

那么是否有一个函数或其他东西,您可以给出两个日期和一周中的一天(例如星期六),并且它会返回两个日期之间星期六的数量?

尝试使用 ChronoUnit.WEEKS. Between 并将结果除以 7 的问题是,如果您有类似 4 的内容,它将无法工作(因为这不是一整周),或10(因为它会被算作一周)

另一个想法可能是使用循环并检查一天是否是星期六,但这种方式对于大时间范围来说效率低下且缓慢。

是否有一个类似的函数,但它不是计算一周中的某一天,而是计算一个月中某一天(例如任何一个月的 15 日) 或一年中某一天(例如,每年的 4 月 4 日)

如果没有这样的功能,什么是有效的方法来做到这一点?

最佳答案

正如其他人评论的那样,您需要编写自己的代码。但是 java.time 和 Java Streams 可以帮助您完成大部分工作。

LocalDate::datesUntil 方法生成 LocalDate 对象流。测试每个的 DayOfWeek。收集命中。

类似于这个未经测试的示例代码。

ZoneId z = ZoneId.of( "America/Montreal" ) ;
LocalDate start = LocalDate.now( z ) ;
LocalDate then = today.plusDays( 177 ) ;
Stream < LocalDate > dates = start.datesUntil( then ) ;
List < LocalDate > saturdays =
dates
.filter(
date ->
date
.getDayOfWeek()
.equals( DayOfWeek.SATURDAY )
)
.collect(
Collectors.toList()
)
;

您表达了对效率的担忧。我怀疑你陷入了过早优化的陷阱。您的应用程序真的全天每分钟执行数千次此操作吗?如果没有,性能可能不是问题。

始终首先编写简单直接的代码。然后使用 Microbenchmarks Suite 进行实证测试并使用分析器来查看您的担忧是否有效。

关于java.time - 是否有一个函数可以查找两天之间特定日期(一周中的某一天或一个月中的某一天)的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60478119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com