枚举(Enum)定义:
package com.weiyu.utils.enums;
import lombok.Getter;
/**
* 日期时间格式方向枚举
* 用于指示日期时间的不同格式方向
*/
@Getter
public enum DateEnumDirection {
// 原始定义,适用于不需要附加属性或行为的简单场景
/*
// 日期
DATE,
// 时间
DATE_TIME,
// 日期零时
DATE_ZERO_TIME,
// 时间戳
TIME_STAMP,
// 其他
OTHER
*/
// 增强定义
/**
* 仅日期,格式示例:yyyy-MM-dd
*/
DATE("yyyy-MM-dd"),
/**
* 日期和时间,格式示例:yyyy-MM-dd HH:mm:ss
*/
DATE_TIME("yyyy-MM-dd HH:mm:ss"),
/**
* 日期当天的零时时间,格式示例:yyyy-MM-dd 00:00:00
*/
DATE_ZERO_TIME("yyyy-MM-dd 00:00:00"),
/**
* 时间戳(毫秒数)
*/
TIME_STAMP("timestamp"),
/**
* 其他未指定的格式
*/
OTHER("custom format");
/**
* -- GETTER --
* 获取该方向对应的日期格式模式
*/
private final String pattern;
/**
* 私有构造函数
* @param pattern 日期格式模式
*/
DateEnumDirection(String pattern) {
this.pattern = pattern;
}
}
枚举(Enum)使用:
/**
* 日期时间格式方向枚举
* @param dateStr 日期字符串
* @return 字符串
*/
public static DateEnumDirection getDateDirection(String dateStr) {
int dateStrLen = dateStr.length();
return switch (dateStrLen) {
// dateStr=[2025-06-01, 2025-06-10]
case 10 -> DateEnumDirection.DATE;
// dateStr=[2025-06-01 00:00:00, 2025-06-10 00:00:00] 或 [2025-06-01 00:00:00, 2025-06-10 23:59:59]
case 19 -> {
// dateStr=[2025-06-01 00:00:00, 2025-06-10 00:00:00]
if (dateStr.endsWith("00:00:00")) {
yield DateEnumDirection.DATE_ZERO_TIME;
}
// dateStr=[2025-06-01 00:00:00, 2025-06-10 23:59:59]
else {
yield DateEnumDirection.DATE_TIME;
}
}
// dateStr=[1748707200000, 1749484800000] 或 [1748707200000, 1749571199000]
case 13 -> DateEnumDirection.TIME_STAMP;
default -> DateEnumDirection.OTHER;
};
}