效果
- 最近7天:2024年6月21日-2024年6月27日
- 过去一周、最近一周:2024年6月16日-2024年6月22日
- 过去三个月:2024年3月-2024年6月
- 近半年、过去半年:2023年12月-2024年6月
- 去年:2023年1月-2023年12月
- 过去3年:2021年1月-2024年12月
- 累计:2020年1月1日-2024年6月27日
代码
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.WeekFields;
import java.util.Locale;
public class DataFormatUtil {
public static String getDates(String timeType) {
LocalDate now = LocalDate.now();
if ("日".equals(timeType)) {
return now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
}
if ("周".equals(timeType)) {
return now.format(DateTimeFormatter.ofPattern("yyyy-'W'ww"));
}
if ("月".equals(timeType)) {
return now.format(DateTimeFormatter.ofPattern("yyyy-MM"));
}
if ("季".equals(timeType)) {
String quarter = String.valueOf((now.getMonthValue() - 1) / 3 + 1);
return now.format(DateTimeFormatter.ofPattern("yyyy")) + "-Q" + quarter;
}
if ("年".equals(timeType)) {
return now.format(DateTimeFormatter.ofPattern("yyyy"));
}
return "未知时间颗粒度";
}
public static String getAllTimeRanges() {
LocalDate now = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
String currentDateString = now.format(formatter);
LocalDate currentDate = LocalDate.parse(currentDateString, DateTimeFormatter.BASIC_ISO_DATE);
LocalDate startDate;
String[] timeRanges = new String[8];
startDate = currentDate.minusDays(6);
timeRanges[0] = String.format("最近7天:%d年%d月%d日-%d年%d月%d日",
startDate.getYear(), startDate.getMonthValue(), startDate.getDayOfMonth(),
currentDate.getYear(), currentDate.getMonthValue(), currentDate.getDayOfMonth());
startDate = currentDate.with(WeekFields.of(Locale.getDefault()).dayOfWeek(), 1).minusWeeks(1);
LocalDate endDate = startDate.plusDays(6);
timeRanges[1] = String.format("过去一周、最近一周:%d年%d月%d日-%d年%d月%d日",
startDate.getYear(), startDate.getMonthValue(), startDate.getDayOfMonth(),
endDate.getYear(), endDate.getMonthValue(), endDate.getDayOfMonth());
startDate = currentDate.minusMonths(3);
timeRanges[2] = String.format("过去三个月:%d年%d月-%d年%d月",
startDate.getYear(), startDate.getMonthValue(),
currentDate.getYear(), currentDate.getMonthValue());
startDate = currentDate.minusMonths(6);
timeRanges[3] = String.format("近半年、过去半年:%d年%d月-%d年%d月",
startDate.getYear(), startDate.getMonthValue(),
currentDate.getYear(), currentDate.getMonthValue());
startDate = currentDate.minusYears(1).withMonth(1).withDayOfMonth(1);
endDate = startDate.plusYears(1).minusDays(1);
timeRanges[4] = String.format("去年:%d年1月-%d年12月",
startDate.getYear(), startDate.getYear());
startDate = currentDate.minusYears(3);
timeRanges[5] = String.format("过去3年:%d年1月-%d年12月",
startDate.getYear(), currentDate.getYear());
startDate = LocalDate.of(2020, 1, 1);
timeRanges[6] = String.format("累计:%d年1月1日-%d年%d月%d日",
startDate.getYear(), currentDate.getYear(), currentDate.getMonthValue(), currentDate.getDayOfMonth());
StringBuilder result = new StringBuilder();
for (int i = 0; i < timeRanges.length - 1; i++) {
result.append(i + 1).append(". ").append(timeRanges[i]).append("\n");
}
return result.toString();
}
}