时间工具类(获取当月时间、实体类转化)

1.时间校验……

2.时间增加减少开发

3.获取当月第一天……

4.实体类相互转化

package cn.com.trs.dmz.external.data.manager.enums;

import cn.com.trs.dmz.external.data.manager.utils.DatetimeUtil;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class TimeConstant {
    

    /***
     * 时间周期
     */
    public enum PeriodEnum{
        YEAR("年", DatetimeUtil.YYYY,"^\\d{4}$"),
        SEASON("季", DatetimeUtil.YYYYX,"^\\d{4}[ABCD]$"),
        MONTH("月", DatetimeUtil.YYYYMM,"^\\d{4}(\\d{2})$"),
        DAY("日", DatetimeUtil.YYYYMMDD,"^\\d{4}(\\d{2})(\\d{2})$"),
        HOUR("小时", DatetimeUtil.YYYY_MM_DD_HH_MM,"^\\d{4}-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2})$");

        private String code;
        private String pattern;
        private String regex;


        private PeriodEnum( String code, String pattern,String regex) {
            this.code = code;
            this.pattern = pattern;
            this.regex = regex;
        }

        public static PeriodEnum toEnum(String code){
            switch (code){
                case "年":
                    return YEAR;
                case "季":
                    return SEASON;
                case "月":
                    return MONTH;
                case "日":
                    return DAY;
                case "小时":
                    return HOUR;
                default:
                    throw new IllegalArgumentException();

            }
        }

        public static String getPattern(String code){
            return toEnum(code).getPattern();
        }

        public String getCode() {
            return code;
        }

        public String getPattern() {
            return pattern;
        }


        public static boolean isLegal(String periodCode,String date){
            String regex = toEnum(periodCode).regex;
            System.out.println("regex"+regex);
            Pattern pattern = Pattern.compile(regex);
            System.out.println("pattern"+pattern);
            Matcher matcher = pattern.matcher(date);
            System.out.println("matcher"+matcher);
            boolean flag = matcher.matches();
            System.out.println("flag"+flag);
            if(flag){
                int count = matcher.groupCount();
                System.out.println("count"+count);
                if(count == 0){
                    return true;
                }
                if(count == 1){
                    Integer month = Integer.valueOf(matcher.group(1));
                    System.out.println("month"+month);
                    if(month>0&&month<12){
                        return true;
                    }
                }
                if(count == 2){
                    Integer month = Integer.valueOf(matcher.group(1));
                    Integer day = Integer.valueOf(matcher.group(2));
                    System.out.println("month"+month);
                    System.out.println("day"+day);
                    return isLegal(month,day);
                }
                if (count > 2){
                    Integer month = Integer.valueOf(matcher.group(1));
                    Integer day = Integer.valueOf(matcher.group(2));
                    flag = isLegal(month,day);
                    if(flag){
                        Integer hour = Integer.valueOf(matcher.group(3));
                        if(hour>23){
                            return false;
                        }
                        for (int i=4;i<count;i++){
                            Integer num = Integer.valueOf(matcher.group(i));
                            if(num>59){
                                return false;
                            }
                        }
                        return true;
                    }
                }

            }
            return false;
        }



        private static boolean isLegal(Integer month,Integer day){
            List<Integer> bigMonth = new ArrayList<>();
            Collections.addAll(bigMonth,1,3,5,7,8,10,12);
            if(month == 2){
                if(day>28||day<0){
                    return false;
                }
            }else if(bigMonth.contains(month)){
                if(day>31||day<0){
                    return false;
                }
            }else {
                if(day>30||day<0){
                    return false;
                }
            }
            return true;
        }

    }
    
	/**
	加减天数
	*/
	
	 public static Date addDays(Date date, int days) {
        DateTime dt = new DateTime(date);
        Date res;
        if (days >= 0) {
            res = dt.plusDays(days).toDate();
        } else {
            res = dt.minusDays(Math.abs(days)).toDate();
        }

        return res;
    }
	
	 //获取本月第一天
    public  static  String getFisrtMonthDay(){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        return getFomatStr(YYYY_MM_DD,calendar.getTime());
    }

    //获取一个星期前的时间
    public  static  String getWeekDay(){
        Date weekBeginDate= DateUtils.addDays(new Date(),-6);
        return getFomatStr(YYYY_MM_DD,weekBeginDate);
    }

    //获取当前时间
    public  static  String getCurrentDay(){
        return getFomatStr(YYYY_MM_DD,new Date());
    }

}




/**
     * 数据表转换实体
     * @param page
     * @return
     */
    public static List<Person> convertDstToEntity(Page<Object[]> page) {
        return page.getContent().stream()
                .map(arr -> DataDstBean.builder()
                        .name(Objects.toString(arr[0], ""))
                        .code(Objects.toString(arr[1], ""))
                        .dateVal(Objects.toString(arr[2], ""))
                        .dataVal(Objects.toString(arr[3], ""))
                        .age(Objects.toString(arr[4], ""))
                        .build())
                .collect(toList());
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值