栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java8时间工具类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java8时间工具类

package ele;

import java.util.Calendar;
import java.util.Date;


public enum DateUtil {
    MILLISECOND((type, calendar, val) -> {
        calendar.add(Calendar.MILLISECOND, val);
        if (!TypeEnum.SELF.equals(type)) {
            val = val < 0 ? -val : val;
            if (val < 10) {
                calendar.set(Calendar.MILLISECOND, calendar.get(Calendar.MILLISECOND) - calendar.get(Calendar.MILLISECOND) % 10 + (TypeEnum.FLOOR.equals(type) ? 9 : 0));
            } else if (val < 100) {
                calendar.set(Calendar.MILLISECOND, calendar.get(Calendar.MILLISECOND) - calendar.get(Calendar.MILLISECOND) % 100 + (TypeEnum.FLOOR.equals(type) ? 99 : 0));
            } else if (val < 1000) {
                calendar.set(Calendar.MILLISECOND, calendar.get(Calendar.MILLISECOND) - calendar.get(Calendar.MILLISECOND) % 1000 + (TypeEnum.FLOOR.equals(type) ? 999 : 0));
            }
        }
    }),
    SECOND((type, calendar, val) -> {
        calendar.add(Calendar.SECOND, val);
        if (TypeEnum.CEILING.equals(type)) {
            calendar.set(Calendar.MILLISECOND, 0);
        } else if (TypeEnum.FLOOR.equals(type)) {
            calendar.set(Calendar.MILLISECOND, 999);
        }
    }),
    MINUTE((type, calendar, val) -> {
        calendar.add(Calendar.MINUTE, val);
        if (TypeEnum.CEILING.equals(type)) {
            calendar.set(Calendar.MILLISECOND, 0);
            calendar.set(Calendar.SECOND, 0);
        } else if (TypeEnum.FLOOR.equals(type)) {
            calendar.set(Calendar.MILLISECOND, 999);
            calendar.set(Calendar.SECOND, 59);
        }
    }),
    HOUR((type, calendar, val) -> {
        calendar.add(Calendar.HOUR, val);
        if (TypeEnum.CEILING.equals(type)) {
            calendar.set(Calendar.MILLISECOND, 0);
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MINUTE, 0);
        } else if (TypeEnum.FLOOR.equals(type)) {
            calendar.set(Calendar.MILLISECOND, 999);
            calendar.set(Calendar.SECOND, 59);
            calendar.set(Calendar.MINUTE, 59);
        }
    }),
    DAY((type, calendar, val) -> {
        calendar.add(Calendar.DATE, val);
        if (TypeEnum.CEILING.equals(type)) {
            calendar.set(Calendar.MILLISECOND, 0);
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.HOUR_OF_DAY, 0);
        } else if (TypeEnum.FLOOR.equals(type)) {
            calendar.set(Calendar.MILLISECOND, 999);
            calendar.set(Calendar.SECOND, 59);
            calendar.set(Calendar.MINUTE, 59);
            calendar.set(Calendar.HOUR_OF_DAY, 23);
        }
    }),
    WEEK((type, calendar, val) -> {
            calendar.add(Calendar.WEEK_OF_YEAR, val);
        if (TypeEnum.CEILING.equals(type)) {
            calendar.add(Calendar.DAY_OF_YEAR, 1 - calendar.get(Calendar.DAY_OF_WEEK));
            calendar.set(Calendar.MILLISECOND, 0);
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.HOUR_OF_DAY, 0);
        } else if (TypeEnum.FLOOR.equals(type)) {
            calendar.add(Calendar.DAY_OF_YEAR, 7 - calendar.get(Calendar.DAY_OF_WEEK));
            calendar.set(Calendar.MILLISECOND, 999);
            calendar.set(Calendar.SECOND, 59);
            calendar.set(Calendar.MINUTE, 59);
            calendar.set(Calendar.HOUR_OF_DAY, 23);
        }
    }),
    MonTH((type, calendar, val) -> {
        calendar.add(Calendar.MONTH, val);
        if (TypeEnum.CEILING.equals(type)) {
            calendar.set(Calendar.DAY_OF_MONTH, 1);
            calendar.set(Calendar.MILLISECOND, 0);
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.HOUR_OF_DAY, 0);
        } else if (TypeEnum.FLOOR.equals(type)) {
            calendar.add(Calendar.MONTH, 1);
            calendar.set(Calendar.MILLISECOND, 999);
            calendar.set(Calendar.SECOND, 59);
            calendar.set(Calendar.MINUTE, 59);
            calendar.set(Calendar.HOUR_OF_DAY, 23);
            calendar.set(Calendar.DAY_OF_MONTH, 1);
            calendar.add(Calendar.DAY_OF_YEAR, -1);
        }
    }),
    YEAR((type, calendar, val) -> {
        calendar.add(Calendar.YEAR, val);
        if (TypeEnum.CEILING.equals(type)) {
            calendar.set(Calendar.MILLISECOND, 0);
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.HOUR_OF_DAY, 0);
            calendar.set(Calendar.DAY_OF_YEAR, 1);
        } else if (TypeEnum.FLOOR.equals(type)) {
            calendar.add(Calendar.YEAR, 1);
            calendar.set(Calendar.MILLISECOND, 999);
            calendar.set(Calendar.SECOND, 59);
            calendar.set(Calendar.MINUTE, 59);
            calendar.set(Calendar.HOUR_OF_DAY, 23);
            calendar.set(Calendar.DAY_OF_YEAR, 1);
            calendar.add(Calendar.DATE, -1);
        }
    }),
    ;

    DateConsumer rule;

    DateUtil(DateConsumer rule) {
        this.rule = rule;
    }

    
    public Date getCeiling() {
        Calendar calendar = Calendar.getInstance();
        rule.accept(TypeEnum.CEILING, calendar, 0);
        return calendar.getTime();
    }

    
    public Date getFloor() {
        Calendar calendar = Calendar.getInstance();
        rule.accept(TypeEnum.FLOOR, calendar, 0);
        return calendar.getTime();
    }

    
    public Date calculateAndGet(int offset) {
        Calendar calendar = Calendar.getInstance();
        rule.accept(TypeEnum.SELF, calendar, offset);
        return calendar.getTime();
    }

    
    public Date calculateAndGetCeiling(int offset) {
        Calendar calendar = Calendar.getInstance();
        rule.accept(TypeEnum.CEILING, calendar, offset);
        return calendar.getTime();
    }

    
    public Date calculateAndGetFloor(int offset) {
        Calendar calendar = Calendar.getInstance();
        rule.accept(TypeEnum.FLOOR, calendar, offset);
        return calendar.getTime();
    }

    
    public Date getForSubOne() {
        Calendar calendar = Calendar.getInstance();
        rule.accept(TypeEnum.SELF, calendar, -1);
        return calendar.getTime();
    }

    
    public Date getForAddOne() {
        Calendar calendar = Calendar.getInstance();
        rule.accept(TypeEnum.SELF, calendar, 1);
        return calendar.getTime();
    }

    
    public Date getCeilingForSubOne() {
        Calendar calendar = Calendar.getInstance();
        rule.accept(TypeEnum.CEILING, calendar, -1);
        return calendar.getTime();
    }

    
    public Date getFloorForSubOne() {
        Calendar calendar = Calendar.getInstance();
        rule.accept(TypeEnum.FLOOR, calendar, -1);
        return calendar.getTime();
    }

    
    public Date getCeilingForAddOne() {
        Calendar calendar = Calendar.getInstance();
        rule.accept(TypeEnum.CEILING, calendar, 1);
        return calendar.getTime();
    }

    
    public Date getFloorForAddOne() {
        Calendar calendar = Calendar.getInstance();
        rule.accept(TypeEnum.FLOOR, calendar, 1);
        return calendar.getTime();
    }

    
    public Date calculateAndGet(Date date, int offset) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        rule.accept(TypeEnum.SELF, calendar, offset);
        return calendar.getTime();
    }

    
    public Date calculateAndGetCeiling(Date date, int offset) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        rule.accept(TypeEnum.CEILING, calendar, offset);
        return calendar.getTime();
    }

    
    public Date calculateAndGetFloor(Date date, int offset) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        rule.accept(TypeEnum.FLOOR, calendar, offset);
        return calendar.getTime();
    }

    
    public Date getForSubOne(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        rule.accept(TypeEnum.SELF, calendar, -1);
        return calendar.getTime();
    }

    
    public Date getForAddOne(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        rule.accept(TypeEnum.SELF, calendar, 1);
        return calendar.getTime();
    }

    
    public Date getCeilingForSubOne(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        rule.accept(TypeEnum.CEILING, calendar, -1);
        return calendar.getTime();
    }

    
    public Date getFloorForSubOne(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        rule.accept(TypeEnum.FLOOR, calendar, -1);
        return calendar.getTime();
    }

    
    public Date getCeilingForAddOne(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        rule.accept(TypeEnum.CEILING, calendar, 1);
        return calendar.getTime();
    }

    
    public Date getFloorForAddOne(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        rule.accept(TypeEnum.FLOOR, calendar, 1);
        return calendar.getTime();
    }

    @FunctionalInterface
    public interface DateConsumer {
        void accept(A a,B b,C c);
    }

    private enum TypeEnum {
        CEILING,
        FLOOR,
        SELF,
        ;
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/682402.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号