用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/fGb1 著作权归作者所有。请勿转载和采集!