java写一个方法,年月格式为“yyyy-MM”,年周格式为“yyyy-ww",通过dimenssion区分,获取传入的年月或年周之间的天数
时间: 2024-05-02 14:17:50 浏览: 138
java获取日期之间天数的方法
以下是一个Java方法,它根据传入的年月或年周格式和时间范围计算天数。
```java
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
public class DateUtils {
public static int getDaysBetween(String dimension, String start, String end) {
DateTimeFormatter formatter = null;
ChronoUnit unit = null;
if (dimension.equals("yyyy-MM")) {
formatter = DateTimeFormatter.ofPattern("yyyy-MM");
unit = ChronoUnit.MONTHS;
} else if (dimension.equals("yyyy-ww")) {
formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
unit = ChronoUnit.WEEKS;
// 计算星期一所在的日期
LocalDate startDate = LocalDate.parse(start + "-01", formatter);
startDate = startDate.with(ChronoUnit.DAY_OF_WEEK, 1);
start = startDate.format(formatter);
} else {
throw new IllegalArgumentException("Unsupported dimension: " + dimension);
}
LocalDate startDate = LocalDate.parse(start, formatter);
LocalDate endDate = LocalDate.parse(end, formatter);
long days = unit.between(startDate, endDate);
return (int) days + 1; // 包含起始和结束日期
}
}
```
该方法接受三个参数:
- `dimension`:时间维度,可以是`"yyyy-MM"`或`"yyyy-ww"`;
- `start`:开始时间,格式与`dimension`对应;
- `end`:结束时间,格式与`dimension`对应。
方法首先根据时间维度确定日期格式和计算单位。如果时间维度是`"yyyy-ww"`,还需要计算出开始日期所在的星期一所在的日期。然后使用`LocalDate`类解析开始日期和结束日期,并计算它们之间的天数。最后返回天数加1,以包括起始日期和结束日期。
阅读全文