package com.keydak.project.core.chart.enums; import java.time.Duration; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; /** * @Author Miracle xyt * @Date 2023/7/20 16:55 * @Version 1.0 * * 时间维度枚举类 限制时间格式 */ public enum TimeUnit { MINUTE(1, "min") { @Override public List<String> getTimes(String startTime, String endTime, String time) { try { LocalDateTime start = LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); LocalDateTime end = LocalDateTime.parse(endTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); //计算时间差 Duration duration = Duration.between(start, end); long minutes = duration.toMinutes(); // 对时间差进行限制,最多显示一周的分钟数 minutes = Math.min(minutes, 7 * 24 * 60); List<String> times = new ArrayList<>(); for (int i = 0; i <= minutes; i++) { String formattedTime = ""; if ("min".equals(time)) { formattedTime = start.plusMinutes(i).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")); } else if ("hour".equals(time)) { formattedTime = start.plusMinutes(i).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH")); } else if ("day".equals(time)) { formattedTime = start.plusMinutes(i).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); } times.add(formattedTime); } return times; } catch (Exception e) { e.printStackTrace(); } return new ArrayList<>(); } }, HOUR(2, "hour") { @Override public List<String> getTimes(String startTime, String endTime, String time) { try { LocalDateTime start = LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); LocalDateTime end = LocalDateTime.parse(endTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); //计算时间差 Duration duration = Duration.between(start, end); long hours = duration.toHours(); // 对时间差进行限制,最多显示一个月的小时数 hours = Math.min(hours, 30 * 24); List<String> times = new ArrayList<>(); for (int i = 0; i <= hours; i++) { String formattedTime = ""; if ("min".equals(time)) { formattedTime = start.plusHours(i).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")); } else if ("hour".equals(time)) { formattedTime = start.plusHours(i).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH")); } else if ("day".equals(time)) { formattedTime = start.plusHours(i).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); } times.add(formattedTime); } return times; } catch (Exception e) { e.printStackTrace(); } return new ArrayList<>(); } }, DAY(3, "day") { @Override public List<String> getTimes(String startTime, String endTime, String time) { try { LocalDateTime start = LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); LocalDateTime end = LocalDateTime.parse(endTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); //计算时间差 Duration duration = Duration.between(start, end); long days = duration.toDays(); // 对时间差进行限制,最多显示一个月的天数 days = Math.min(days, 30); List<String> times = new ArrayList<>(); for (int i = 0; i <= days; i++) { String formattedTime = ""; if ("min".equals(time)) { formattedTime = start.plusDays(i).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")); } else if ("hour".equals(time)) { formattedTime = start.plusDays(i).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH")); } else if ("day".equals(time)) { formattedTime = start.plusDays(i).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); } times.add(formattedTime); } return times; } catch (Exception e) { e.printStackTrace(); } return new ArrayList<>(); } }; private int code; private String label; TimeUnit(int code, String label) { this.code = code; this.label = label; } public int getCode() { return code; } public String getLabel() { return label; } public abstract List<String> getTimes(String startTime, String endTime, String time); }
Java 时间维度枚举类
于 2023-07-24 10:33:40 首次发布