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());
}