Java 代码计算连续天数:自然日和交易日
以下是一个简单的 Java 代码示例,可以计算自然日和交易日连续天数。在这个示例中,我们将假设日期数据已经被存储在一个名为 dates 的 List 中。
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.util.List;
public class ContinuityCalculator {
public static int calculateNaturalDays(List<LocalDate> dates) {
int continuity = 0;
int maxContinuity = 0;
LocalDate previousDate = null;
for (LocalDate date : dates) {
if (previousDate == null || date.isEqual(previousDate.plusDays(1))) {
continuity++;
if (continuity > maxContinuity) {
maxContinuity = continuity;
}
} else {
continuity = 0;
}
previousDate = date;
}
return maxContinuity;
}
public static int calculateTradingDays(List<LocalDate> dates) {
int continuity = 0;
int maxContinuity = 0;
LocalDate previousDate = null;
for (LocalDate date : dates) {
if (previousDate == null || date.isEqual(previousDate.plusDays(1))) {
if (isTradingDay(date)) {
continuity++;
if (continuity > maxContinuity) {
maxContinuity = continuity;
}
}
} else {
continuity = 0;
}
previousDate = date;
}
return maxContinuity;
}
private static boolean isTradingDay(LocalDate date) {
DayOfWeek dayOfWeek = date.getDayOfWeek();
return !dayOfWeek.equals(DayOfWeek.SATURDAY) && !dayOfWeek.equals(DayOfWeek.SUNDAY);
}
}
在这里,我们定义了两个静态方法,calculateNaturalDays 和 calculateTradingDays。这些方法都接受一个 LocalDate 对象列表,代表要计算的日期序列。calculateNaturalDays 方法计算自然日的连续天数,而 calculateTradingDays 方法计算交易日的连续天数。
我们使用一个循环遍历日期列表,并跟踪上一个日期。在每次迭代中,我们检查上一个日期是否存在,以及当前日期是否等于上一个日期加 1 天。如果是,我们增加连续天数的计数器,如果连续天数的计数器超过了之前的最大值,我们更新最大值。如果当前日期不是上一个日期的下一天,我们将连续天数的计数器重置为零。
在 calculateTradingDays 方法中,我们还使用了一个名为 isTradingDay 的私有辅助方法来检查当前日期是否是交易日。如果当前日期是周六或周日,我们将返回 false,表示它不是交易日。
原文地址: https://www.cveoy.top/t/topic/olYF 著作权归作者所有。请勿转载和采集!