Java 枚举(Enum)的使用实例

枚举(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;
        };
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值