• 通用 common 子模块。包括: 自定义响应数据结构 Json操作 MD5 Cookie 操作


    一、枚举类型定义

          1、性别:男,女,保密      (目录:com/imooc/enums/Sex.java)

    package com.imooc.enums;
    
    public enum  Sex {
    
        woman(0,"女"),
        man(1,"男"),
        secret(2,"保密");
    
        public final Integer type;
        public final String value;
    
        Sex(Integer type,String value) {
           this.type = type;
           this.value = value;
        }
    
    }
    View Code

         2、是否   (如:是否显示)(目录:com/imooc/enums/YesOrNo.java)

      

    package com.imooc.enums;
    
    public enum YesOrNo {
    
        NO(0,"否"),
        YES(1,"是");
    
        public final Integer type;
        public final String value;
    
        YesOrNo(Integer type,String value) {
            this.type = type;
            this.value = value;
        }
    }
    View Code

    二、自定义响应数据结构  IMOOCJSONResult  (目录:com/imooc/utils/IMOOCJSONResult.java)

    package com.imooc.utils;
    
    import com.fasterxml.jackson.annotation.JsonIgnore;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
    /**
     *
     * @Title: IMOOCJSONResult.java
     * @Package com.imooc.utils
     * @Description: 自定义响应数据结构
     *                 本类可提供给 H5/ios/安卓/公众号/小程序 使用
     *                 前端接受此类数据(json object)后,可自行根据业务去实现相关功能
     *
     *                 200:表示成功
     *                 500:表示错误,错误信息在msg字段中
     *                 501:bean验证错误,不管多少个错误都以map形式返回
     *                 502:拦截器拦截到用户token出错
     *                 555:异常抛出信息
     *                 556: 用户qq校验异常
     * @Copyright: Copyright (c) 2020
     * @Company: www.imooc.com
     * @author 慕课网 - 风间影月
     * @version V1.0
     */
    public class IMOOCJSONResult {
    
        // 定义jackson对象
        private static final ObjectMapper MAPPER = new ObjectMapper();
    
        // 响应业务状态
        private Integer status;
    
        // 响应消息
        private String msg;
    
        // 响应中的数据
        private Object data;
    
        @JsonIgnore
        private String ok;    // 不使用
    
        public static IMOOCJSONResult build(Integer status, String msg, Object data) {
            return new IMOOCJSONResult(status, msg, data);
        }
    
        public static IMOOCJSONResult build(Integer status, String msg, Object data, String ok) {
            return new IMOOCJSONResult(status, msg, data, ok);
        }
    
        public static IMOOCJSONResult ok(Object data) {
            return new IMOOCJSONResult(data);
        }
    
        public static IMOOCJSONResult ok() {
            return new IMOOCJSONResult(null);
        }
    
        public static IMOOCJSONResult errorMsg(String msg) {
            return new IMOOCJSONResult(500, msg, null);
        }
    
        public static IMOOCJSONResult errorMap(Object data) {
            return new IMOOCJSONResult(501, "error", data);
        }
    
        public static IMOOCJSONResult errorTokenMsg(String msg) {
            return new IMOOCJSONResult(502, msg, null);
        }
    
        public static IMOOCJSONResult errorException(String msg) {
            return new IMOOCJSONResult(555, msg, null);
        }
    
        public static IMOOCJSONResult errorUserQQ(String msg) {
            return new IMOOCJSONResult(556, msg, null);
        }
    
        public IMOOCJSONResult() {
    
        }
    
        public IMOOCJSONResult(Integer status, String msg, Object data) {
            this.status = status;
            this.msg = msg;
            this.data = data;
        }
    
        public IMOOCJSONResult(Integer status, String msg, Object data, String ok) {
            this.status = status;
            this.msg = msg;
            this.data = data;
            this.ok = ok;
        }
    
        public IMOOCJSONResult(Object data) {
            this.status = 200;
            this.msg = "OK";
            this.data = data;
        }
    
        public Boolean isOK() {
            return this.status == 200;
        }
    
        public Integer getStatus() {
            return status;
        }
    
        public void setStatus(Integer status) {
            this.status = status;
        }
    
        public String getMsg() {
            return msg;
        }
    
        public void setMsg(String msg) {
            this.msg = msg;
        }
    
        public Object getData() {
            return data;
        }
    
        public void setData(Object data) {
            this.data = data;
        }
    
        public String getOk() {
            return ok;
        }
    
        public void setOk(String ok) {
            this.ok = ok;
        }
    
    }
    View Code

    三、Json操作:对象转换成json字符串,将json结果集转化为对象,json数据转换成pojo对象list

    package com.imooc.utils;
    
    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.JavaType;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
    import java.util.List;
    
    /**
     * 
     * @Title: JsonUtils.java
     * @Package com.imooc.utils
     * @Description: json转换类
     * Copyright: Copyright (c)
     * Company: www.imooc.com
     * 
     * @author imooc
     */
    public class JsonUtils {
    
        // 定义jackson对象
        private static final ObjectMapper MAPPER = new ObjectMapper();
    
        /**
         * 将对象转换成json字符串。
         * @param data
         * @return
         */
        public static String objectToJson(Object data) {
            try {
                String string = MAPPER.writeValueAsString(data);
                return string;
            } catch (JsonProcessingException e) {
                e.printStackTrace();
            }
            return null;
        }
        
        /**
         * 将json结果集转化为对象
         * 
         * @param jsonData json数据
         * @param beanType 对象中的object类型
         * @return
         */
        public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
            try {
                T t = MAPPER.readValue(jsonData, beanType);
                return t;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
        
        /**
         * 将json数据转换成pojo对象list
         * @param jsonData
         * @param beanType
         * @return
         */
        public static <T>List<T> jsonToList(String jsonData, Class<T> beanType) {
            JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
            try {
                List<T> list = MAPPER.readValue(jsonData, javaType);
                return list;
            } catch (Exception e) {
                e.printStackTrace();
            }
            
            return null;
        }
        
    }
    View Code

    四、MD5操作

       

    package com.imooc.utils;
    
    import org.apache.commons.codec.binary.Base64;
    
    import java.security.MessageDigest;
    
    
    public class MD5Utils {
    
        public static String getMD5Str(String strVal) throws Exception {
    
            MessageDigest md5 = MessageDigest.getInstance("MD5");
            String newStr= Base64.encodeBase64String(md5.digest(strVal.getBytes()));
            return  newStr;
        }
    
        public  static  void main(String[] args)  {
            try {
                String md5=getMD5Str("imooc");
                System.out.println(md5);
    
            }catch (Exception e) {
                e.printStackTrace();
    
            }
        }
    }
    View Code

    五、Cookie操作

    package com.imooc.utils;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.UnsupportedEncodingException;
    import java.net.URLDecoder;
    import java.net.URLEncoder;
    
    
    /**
     * 
     * @Title: CookieUtils.java
     * @Package com.imooc.utils
     * @Description: Cookie 工具类
     * Copyright: Copyright (c)
     * Company: www.imooc.com
     *
     * @author imooc
     * @version V1.0
     */
    public final class CookieUtils {
    
        final static Logger logger = LoggerFactory.getLogger(CookieUtils.class);
        
        /**
         * 
         * @Description: 得到Cookie的值, 不编码
         * @param request
         * @param cookieName
         * @return
         */
        public static String getCookieValue(HttpServletRequest request, String cookieName) {
            return getCookieValue(request, cookieName, false);
        }
        
        /**
         * 
         * @Description: 得到Cookie的值
         * @param request
         * @param cookieName
         * @param isDecoder
         * @return
         */
        public static String getCookieValue(HttpServletRequest request, String cookieName, boolean isDecoder) {
            Cookie[] cookieList = request.getCookies();
            if (cookieList == null || cookieName == null) {
                return null;
            }
            String retValue = null;
            try {
                for (int i = 0; i < cookieList.length; i++) {
                    if (cookieList[i].getName().equals(cookieName)) {
                        if (isDecoder) {
                            retValue = URLDecoder.decode(cookieList[i].getValue(), "UTF-8");
                        } else {
                            retValue = cookieList[i].getValue();
                        }
                        break;
                    }
                }
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            return retValue;
        }
    
        /**
         * 
         * @Description: 得到Cookie的值
         * @param request
         * @param cookieName
         * @param encodeString
         * @return
         */
        public static String getCookieValue(HttpServletRequest request, String cookieName, String encodeString) {
            Cookie[] cookieList = request.getCookies();
            if (cookieList == null || cookieName == null) {
                return null;
            }
            String retValue = null;
            try {
                for (int i = 0; i < cookieList.length; i++) {
                    if (cookieList[i].getName().equals(cookieName)) {
                        retValue = URLDecoder.decode(cookieList[i].getValue(), encodeString);
                        break;
                    }
                }
            } catch (UnsupportedEncodingException e) {
                 e.printStackTrace();
            }
            return retValue;
        }
    
        /**
         * 
         * @Description: 设置Cookie的值 不设置生效时间默认浏览器关闭即失效,也不编码
         * @param request
         * @param response
         * @param cookieName
         * @param cookieValue
         */
        public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,
                String cookieValue) {
            setCookie(request, response, cookieName, cookieValue, -1);
        }
    
        /**
         * 
         * @Description: 设置Cookie的值 在指定时间内生效,但不编码
         * @param request
         * @param response
         * @param cookieName
         * @param cookieValue
         * @param cookieMaxage
         */
        public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,
                String cookieValue, int cookieMaxage) {
            setCookie(request, response, cookieName, cookieValue, cookieMaxage, false);
        }
    
        /**
         * 
         * @Description: 设置Cookie的值 不设置生效时间,但编码
         * 在服务器被创建,返回给客户端,并且保存客户端
         * 如果设置了SETMAXAGE(int seconds),会把cookie保存在客户端的硬盘中
         * 如果没有设置,会默认把cookie保存在浏览器的内存中
         * 一旦设置setPath():只能通过设置的路径才能获取到当前的cookie信息
         * @param request
         * @param response
         * @param cookieName
         * @param cookieValue
         * @param isEncode
         */
        public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,
                String cookieValue, boolean isEncode) {
            setCookie(request, response, cookieName, cookieValue, -1, isEncode);
        }
    
       /**
        * 
        * @Description: 设置Cookie的值 在指定时间内生效, 编码参数
        * @param request
        * @param response
        * @param cookieName
        * @param cookieValue
        * @param cookieMaxage
        * @param isEncode
        */
        public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,
                String cookieValue, int cookieMaxage, boolean isEncode) {
            doSetCookie(request, response, cookieName, cookieValue, cookieMaxage, isEncode);
        }
    
        /**
         * 
         * @Description: 设置Cookie的值 在指定时间内生效, 编码参数(指定编码)
         * @param request
         * @param response
         * @param cookieName
         * @param cookieValue
         * @param cookieMaxage
         * @param encodeString
         */
        public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,
                String cookieValue, int cookieMaxage, String encodeString) {
            doSetCookie(request, response, cookieName, cookieValue, cookieMaxage, encodeString);
        }
    
        /**
         * 
         * @Description: 删除Cookie带cookie域名
         * @param request
         * @param response
         * @param cookieName
         */
        public static void deleteCookie(HttpServletRequest request, HttpServletResponse response,
                String cookieName) {
            doSetCookie(request, response, cookieName, null, -1, false);
    //        doSetCookie(request, response, cookieName, "", -1, false);
        }
    
        
        /**
         * 
         * @Description: 设置Cookie的值,并使其在指定时间内生效
         * @param request
         * @param response
         * @param cookieName
         * @param cookieValue
         * @param cookieMaxage    cookie生效的最大秒数
         * @param isEncode
         */
        private static final void doSetCookie(HttpServletRequest request, HttpServletResponse response,
                String cookieName, String cookieValue, int cookieMaxage, boolean isEncode) {
            try {
                if (cookieValue == null) {
                    cookieValue = "";
                } else if (isEncode) {
                    cookieValue = URLEncoder.encode(cookieValue, "utf-8");
                }
                Cookie cookie = new Cookie(cookieName, cookieValue);
                if (cookieMaxage > 0)
                    cookie.setMaxAge(cookieMaxage);
                if (null != request) {// 设置域名的cookie
                    String domainName = getDomainName(request);
                    logger.info("========== domainName: {} ==========", domainName);
                    if (!"localhost".equals(domainName)) {
                        cookie.setDomain(domainName);
                    }
                }
                cookie.setPath("/");
                response.addCookie(cookie);
            } catch (Exception e) {
                 e.printStackTrace();
            }
        }
    
        /**
         * 
         * @Description: 设置Cookie的值,并使其在指定时间内生效
         * @param request
         * @param response
         * @param cookieName
         * @param cookieValue
         * @param cookieMaxage    cookie生效的最大秒数
         * @param encodeString
         */
        private static final void doSetCookie(HttpServletRequest request, HttpServletResponse response,
                String cookieName, String cookieValue, int cookieMaxage, String encodeString) {
            try {
                if (cookieValue == null) {
                    cookieValue = "";
                } else {
                    cookieValue = URLEncoder.encode(cookieValue, encodeString);
                }
                Cookie cookie = new Cookie(cookieName, cookieValue);
                if (cookieMaxage > 0)
                    cookie.setMaxAge(cookieMaxage);
                if (null != request) {// 设置域名的cookie
                    String domainName = getDomainName(request);
                    logger.info("========== domainName: {} ==========", domainName);
                    if (!"localhost".equals(domainName)) {
                        cookie.setDomain(domainName);
                    }
                }
                cookie.setPath("/");
                response.addCookie(cookie);
            } catch (Exception e) {
                 e.printStackTrace();
            }
        }
    
        /**
         * 
         * @Description: 得到cookie的域名
         * @return
         */
        private static final String getDomainName(HttpServletRequest request) {
            String domainName = null;
    
            String serverName = request.getRequestURL().toString();
            if (serverName == null || serverName.equals("")) {
                domainName = "";
            } else {
                serverName = serverName.toLowerCase();
                serverName = serverName.substring(7);
                final int end = serverName.indexOf("/");
                serverName = serverName.substring(0, end);
                if (serverName.indexOf(":") > 0) {
                    String[] ary = serverName.split("\:");
                    serverName = ary[0];
                }
    
                final String[] domains = serverName.split("\.");
                int len = domains.length;
                if (len > 3 && !isIp(serverName)) {
                    // www.xxx.com.cn
                    domainName = "." + domains[len - 3] + "." + domains[len - 2] + "." + domains[len - 1];
                } else if (len <= 3 && len > 1) {
                    // xxx.com or xxx.cn
                    domainName = "." + domains[len - 2] + "." + domains[len - 1];
                } else {
                    domainName = serverName;
                }
            }
            return domainName;
        }
        
        public static String trimSpaces(String IP){//去掉IP字符串前后所有的空格  
            while(IP.startsWith(" ")){  
                   IP= IP.substring(1,IP.length()).trim();  
                }  
            while(IP.endsWith(" ")){  
                   IP= IP.substring(0,IP.length()-1).trim();  
                }  
            return IP;  
        }  
        
        public static boolean isIp(String IP){//判断是否是一个IP  
            boolean b = false;  
            IP = trimSpaces(IP);  
            if(IP.matches("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}")){  
                String s[] = IP.split("\.");  
                if(Integer.parseInt(s[0])<255)  
                    if(Integer.parseInt(s[1])<255)  
                        if(Integer.parseInt(s[2])<255)  
                            if(Integer.parseInt(s[3])<255)  
                                b = true;  
            }  
            return b;  
        }  
    
    }
    View Code

    六、时间日期操作

    package com.imooc.utils;
    
    import java.text.*;
    import java.util.*;
    
    import org.apache.commons.lang3.StringUtils;
    import org.apache.commons.lang3.time.DateUtils;
    
    public class DateUtil {
    
        /**
         * Base ISO 8601 Date format yyyyMMdd i.e., 20021225 for the 25th day of December in the year 2002
         */
        public static final String ISO_DATE_FORMAT = "yyyyMMdd";
    
        /**
         * Expanded ISO 8601 Date format yyyy-MM-dd i.e., 2002-12-25 for the 25th day of December in the year 2002
         */
        public static final String ISO_EXPANDED_DATE_FORMAT = "yyyy-MM-dd";
    
        /**
         * yyyy-MM-dd hh:mm:ss
         */
        public static String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
        public static String DATE_PATTERN = "yyyyMMddHHmmss";
       
        /**
         * 则个
         */
        private static boolean LENIENT_DATE = false;
    
    
        private static Random random = new Random();
        private static final int ID_BYTES = 10;
    
        public synchronized static String generateId() {
            StringBuffer result = new StringBuffer();
            result = result.append(System.currentTimeMillis());
            for (int i = 0; i < ID_BYTES; i++) {
                result = result.append(random.nextInt(10));
            }
            return result.toString();
        }
    
        protected static final float normalizedJulian(float JD) {
    
            float f = Math.round(JD + 0.5f) - 0.5f;
    
            return f;
        }
    
        /**
         * Returns the Date from a julian. The Julian date will be converted to noon GMT,
         * such that it matches the nearest half-integer (i.e., a julian date of 1.4 gets
         * changed to 1.5, and 0.9 gets changed to 0.5.)
         *
         * @param JD the Julian date
         * @return the Gregorian date
         */
        public static final Date toDate(float JD) {
    
            /* To convert a Julian Day Number to a Gregorian date, assume that it is for 0 hours, Greenwich time (so
             * that it ends in 0.5). Do the following calculations, again dropping the fractional part of all
             * multiplicatons and divisions. Note: This method will not give dates accurately on the
             * Gregorian Proleptic Calendar, i.e., the calendar you get by extending the Gregorian
             * calendar backwards to years earlier than 1582. using the Gregorian leap year
             * rules. In particular, the method fails if Y<400. */
            float Z = (normalizedJulian(JD)) + 0.5f;
            float W = (int) ((Z - 1867216.25f) / 36524.25f);
            float X = (int) (W / 4f);
            float A = Z + 1 + W - X;
            float B = A + 1524;
            float C = (int) ((B - 122.1) / 365.25);
            float D = (int) (365.25f * C);
            float E = (int) ((B - D) / 30.6001);
            float F = (int) (30.6001f * E);
            int day = (int) (B - D - F);
            int month = (int) (E - 1);
    
            if (month > 12) {
                month = month - 12;
            }
    
            int year = (int) (C - 4715); //(if Month is January or February) or C-4716 (otherwise)
    
            if (month > 2) {
                year--;
            }
    
            Calendar c = Calendar.getInstance();
            c.set(Calendar.YEAR, year);
            c.set(Calendar.MONTH, month - 1); // damn 0 offsets
            c.set(Calendar.DATE, day);
    
            return c.getTime();
        }
    
        /**
         * Returns the days between two dates. Positive values indicate that
         * the second date is after the first, and negative values indicate, well,
         * the opposite. Relying on specific times is problematic.
         *
         * @param early the "first date"
         * @param late the "second date"
         * @return the days between the two dates
         */
        public static final int daysBetween(Date early, Date late) {
    
            Calendar c1 = Calendar.getInstance();
            Calendar c2 = Calendar.getInstance();
            c1.setTime(early);
            c2.setTime(late);
    
            return daysBetween(c1, c2);
        }
    
        /**
         * Returns the days between two dates. Positive values indicate that
         * the second date is after the first, and negative values indicate, well,
         * the opposite.
         *
         * @param early
         * @param late
         * @return the days between two dates.
         */
        public static final int daysBetween(Calendar early, Calendar late) {
    
            return (int) (toJulian(late) - toJulian(early));
        }
    
        /**
         * Return a Julian date based on the input parameter. This is
         * based from calculations found at
         * <a href="http://quasar.as.utexas.edu/BillInfo/JulianDatesG.html">Julian Day Calculations
         * (Gregorian Calendar)</a>, provided by Bill Jeffrys.
         * @param c a calendar instance
         * @return the julian day number
         */
        public static final float toJulian(Calendar c) {
    
            int Y = c.get(Calendar.YEAR);
            int M = c.get(Calendar.MONTH);
            int D = c.get(Calendar.DATE);
            int A = Y / 100;
            int B = A / 4;
            int C = 2 - A + B;
            float E = (int) (365.25f * (Y + 4716));
            float F = (int) (30.6001f * (M + 1));
            float JD = C + D + E + F - 1524.5f;
    
            return JD;
        }
    
        /**
         * Return a Julian date based on the input parameter. This is
         * based from calculations found at
         * <a href="http://quasar.as.utexas.edu/BillInfo/JulianDatesG.html">Julian Day Calculations
         * (Gregorian Calendar)</a>, provided by Bill Jeffrys.
         * @param date
         * @return the julian day number
         */
        public static final float toJulian(Date date) {
    
            Calendar c = Calendar.getInstance();
            c.setTime(date);
    
            return toJulian(c);
        }
    
        /**
         * @param isoString  
         * @param fmt 
         * @param field   Calendar.YEAR/Calendar.MONTH/Calendar.DATE
         * @param amount 
         * @return
         * @throws ParseException
         */
        public static final String dateIncrease(String isoString, String fmt,
                                                int field, int amount) {
    
            try {
                Calendar cal = GregorianCalendar.getInstance(TimeZone.getTimeZone(
                        "GMT"));
                cal.setTime(stringToDate(isoString, fmt, true));
                cal.add(field, amount);
    
                return dateToString(cal.getTime(), fmt);
    
            } catch (Exception ex) {
                return null;
            }
        }
    
        /**
         * Time Field Rolling function.
         * Rolls (up/down) a single unit of time on the given time field.
         *
         * @param isoString
         * @param field the time field.
         * @param up Indicates if rolling up or rolling down the field value.
         * @param expanded use formating char's
         * @exception ParseException if an unknown field value is given.
         */
        public static final String roll(String isoString, String fmt, int field,
                                        boolean up) throws ParseException {
    
            Calendar cal = GregorianCalendar.getInstance(TimeZone.getTimeZone(
                    "GMT"));
            cal.setTime(stringToDate(isoString, fmt));
            cal.roll(field, up);
    
            return dateToString(cal.getTime(), fmt);
        }
    
        /**
         * Time Field Rolling function.
         * Rolls (up/down) a single unit of time on the given time field.
         *
         * @param isoString
         * @param field the time field.
         * @param up Indicates if rolling up or rolling down the field value.
         * @exception ParseException if an unknown field value is given.
         */
        public static final String roll(String isoString, int field, boolean up) throws
                ParseException {
    
            return roll(isoString, DATETIME_PATTERN, field, up);
        }
    
        /**
         *  java.util.Date
         * @param dateText  
         * @param format  
         * @param lenient  
         * @return
         */
        public static Date stringToDate(String dateText, String format,
                                        boolean lenient) {
    
            if (dateText == null) {
    
                return null;
            }
    
            DateFormat df = null;
    
            try {
    
                if (format == null) {
                    df = new SimpleDateFormat();
                } else {
                    df = new SimpleDateFormat(format);
                }
    
                // setLenient avoids allowing dates like 9/32/2001
                // which would otherwise parse to 10/2/2001
                df.setLenient(false);
    
                return df.parse(dateText);
            } catch (ParseException e) {
    
                return null;
            }
        }
    
        /**
         * @return Timestamp
         */
        public static java.sql.Timestamp getCurrentTimestamp() {
            return new java.sql.Timestamp(new Date().getTime());
        }
    
        /** java.util.Date
         * @param dateText  
         * @param format  
         * @return
         */
        public static Date stringToDate(String dateString, String format) {
    
            return stringToDate(dateString, format, LENIENT_DATE);
        }
    
        /**
         * java.util.Date
         * @param dateText  
         */
        public static Date stringToDate(String dateString) {
            return stringToDate(dateString, ISO_EXPANDED_DATE_FORMAT, LENIENT_DATE);
        }
    
        /**  
         * @return 
         * @param pattern 
         * @param date  
         */
        public static String dateToString(Date date, String pattern) {
    
            if (date == null) {
    
                return null;
            }
    
            try {
    
                SimpleDateFormat sfDate = new SimpleDateFormat(pattern);
                sfDate.setLenient(false);
    
                return sfDate.format(date);
            } catch (Exception e) {
    
                return null;
            }
        }
    
        /**
         * yyyy-MM-dd
         * @param date
         * @return
         */
        public static String dateToString(Date date) {
            return dateToString(date, ISO_EXPANDED_DATE_FORMAT);
        }
    
        /**  
         * @return  
         */
        public static Date getCurrentDateTime() {
            Calendar calNow = Calendar.getInstance();
            Date dtNow = calNow.getTime();
    
            return dtNow;
        }
    
        /**
         *  
         * @param pattern  
         * @return
         */
        public static String getCurrentDateString(String pattern) {
            return dateToString(getCurrentDateTime(), pattern);
        }
    
        /**
         *   yyyy-MM-dd
         * @return
         */
        public static String getCurrentDateString() {
            return dateToString(getCurrentDateTime(), ISO_EXPANDED_DATE_FORMAT);
        }
    
        /**
         * 返回固定格式的当前时间
         *   yyyy-MM-dd hh:mm:ss
         * @param date
         * @return
         */
        public static String dateToStringWithTime( ) {
    
            return dateToString(new Date(), DATETIME_PATTERN);
        }
    
        
        /**
         *   yyyy-MM-dd hh:mm:ss
         * @param date
         * @return
         */
        public static String dateToStringWithTime(Date date) {
    
            return dateToString(date, DATETIME_PATTERN);
        }
    
        /**
         *  
         * @param date
         * @param days
         * @return java.util.Date
         */
        public static Date dateIncreaseByDay(Date date, int days) {
    
            Calendar cal = GregorianCalendar.getInstance(TimeZone.getTimeZone(
                    "GMT"));
            cal.setTime(date);
            cal.add(Calendar.DATE, days);
    
            return cal.getTime();
        }
    
        /**
         *  
         * @param date
         * @param days
         * @return java.util.Date
         */
        public static Date dateIncreaseByMonth(Date date, int mnt) {
    
            Calendar cal = GregorianCalendar.getInstance(TimeZone.getTimeZone(
                    "GMT"));
            cal.setTime(date);
            cal.add(Calendar.MONTH, mnt);
    
            return cal.getTime();
        }
    
        /**
         *  
         * @param date
         * @param mnt
         * @return java.util.Date
         */
        public static Date dateIncreaseByYear(Date date, int mnt) {
    
            Calendar cal = GregorianCalendar.getInstance(TimeZone.getTimeZone(
                    "GMT"));
            cal.setTime(date);
            cal.add(Calendar.YEAR, mnt);
    
            return cal.getTime();
        }
    
        /**
         *  
         * @param date   yyyy-MM-dd
         * @param days
         * @return  yyyy-MM-dd
         */
        public static String dateIncreaseByDay(String date, int days) {
            return dateIncreaseByDay(date, ISO_DATE_FORMAT, days);
        }
    
        /**
         * @param date  
         * @param fmt  
         * @param days
         * @return
         */
        public static String dateIncreaseByDay(String date, String fmt, int days) {
            return dateIncrease(date, fmt, Calendar.DATE, days);
        }
    
        /**
         *  
         * @param src  
         * @param srcfmt  
         * @param desfmt 
         * @return
         */
        public static String stringToString(String src, String srcfmt,
                                            String desfmt) {
            return dateToString(stringToDate(src, srcfmt), desfmt);
        }
    
        /**
         *  
         * @param date  
         * @return string
         */
        public static String getYear(Date date) {
            SimpleDateFormat formater = new SimpleDateFormat(
                    "yyyy");
            String cur_year = formater.format(date);
            return cur_year;
        }
    
        /**
         *  
         * @param date  
         * @return string
         */
        public static String getMonth(Date date) {
            SimpleDateFormat formater = new SimpleDateFormat(
                    "MM");
            String cur_month = formater.format(date);
            return cur_month;
        }
    
        /**
         * @param date  
         * @return string
         */
        public static String getDay(Date date) {
            SimpleDateFormat formater = new SimpleDateFormat(
                    "dd");
            String cur_day = formater.format(date);
            return cur_day;
        }
        
        public static int getDayInt(Date date) {
            SimpleDateFormat formater = new SimpleDateFormat(
                    "dd");
            String cur_day = formater.format(date);
            return Integer.valueOf(cur_day);
        }
        
        /**
         * @param date  
         * @return string
         */
        public static String getHour(Date date) {
            SimpleDateFormat formater = new SimpleDateFormat(
                    "HH");
            String cur_day = formater.format(date);
            return cur_day;
        }    
    
        public static int getMinsFromDate(Date dt) {
            GregorianCalendar cal = new GregorianCalendar();
            cal.setTime(dt);
            int hour = cal.get(Calendar.HOUR_OF_DAY);
            int min = cal.get(Calendar.MINUTE);
            return ((hour * 60) + min);
        }
    
        /**
         * Function to convert String to Date Object. If invalid input then current or next day date
         * is returned (Added by Ali Naqvi on 2006-5-16).
         * @param str String input in YYYY-MM-DD HH:MM[:SS] format.
         * @param isExpiry boolean if set and input string is invalid then next day date is returned
         * @return Date
         */
        public static Date convertToDate(String str, boolean isExpiry) {
            SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm");
            Date dt = null;
            try {
                dt = fmt.parse(str);
            } catch (ParseException ex) {
                Calendar cal = Calendar.getInstance();
                if (isExpiry) {
                    cal.add(Calendar.DAY_OF_MONTH, 1);
                    cal.set(Calendar.HOUR_OF_DAY, 23);
                    cal.set(Calendar.MINUTE, 59);
                } else {
                    cal.set(Calendar.HOUR_OF_DAY, 0);
                    cal.set(Calendar.MINUTE, 0);
                }
                dt = cal.getTime();
            }
            return dt;
        }
    
        public static Date convertToDate(String str) {
            SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd hh:mm");
            Date dt = null;
            try {
                dt = fmt.parse(str);
            } catch (ParseException ex) {
                dt = new Date();
            }
            return dt;
        }
    
        public static String dateFromat(Date date, int minute) {
            String dateFormat = null;
            int year = Integer.parseInt(getYear(date));
            int month = Integer.parseInt(getMonth(date));
            int day = Integer.parseInt(getDay(date));
            int hour = minute / 60;
            int min = minute % 60;
            dateFormat = String.valueOf(year)
                         +
                         (month > 9 ? String.valueOf(month) :
                          "0" + String.valueOf(month))
                         +
                         (day > 9 ? String.valueOf(day) : "0" + String.valueOf(day))
                         + " "
                         +
                         (hour > 9 ? String.valueOf(hour) : "0" + String.valueOf(hour))
                         +
                         (min > 9 ? String.valueOf(min) : "0" + String.valueOf(min))
                         + "00";
            return dateFormat;
        }
        
        public static String sDateFormat() {
            return new SimpleDateFormat(DATE_PATTERN).format(Calendar.getInstance().getTime());    
        }
        
        /**
         * 
         * @Description: 获得本月的第一天日期
         * @return
         * 
         * @author leechenxiang
         * @date 2017年5月31日 下午1:37:34
         */
        public static String getFirstDateOfThisMonth() {
            
            SimpleDateFormat format = new SimpleDateFormat(ISO_EXPANDED_DATE_FORMAT);
            
            Calendar calendarFirst = Calendar.getInstance();
            calendarFirst = Calendar.getInstance();  
            calendarFirst.add(Calendar.MONTH, 0);  
            calendarFirst.set(Calendar.DAY_OF_MONTH, 1);  
            String firstDate = format.format(calendarFirst.getTime()); 
            
            return firstDate;
        }
        
        /**
         * 
         * @Description: 获得本月的最后一天日期
         * @return
         * 
         * @author leechenxiang
         * @date 2017年5月31日 下午1:37:50
         */
        public static String getLastDateOfThisMonth() {
            SimpleDateFormat format = new SimpleDateFormat(ISO_EXPANDED_DATE_FORMAT);  
            
            Calendar calendarLast = Calendar.getInstance();
            calendarLast.setTime(new Date());
            calendarLast.getActualMaximum(Calendar.DAY_OF_MONTH);
            
            String lastDate = format.format(calendarLast.getTime());  
            return lastDate;
        }
        
        /**
         * @Description: 判断字符串日期是否匹配指定的格式化日期
         */
        public static boolean isValidDate(String strDate, String formatter) {
            SimpleDateFormat sdf = null;
            ParsePosition pos = new ParsePosition(0);
    
            if (StringUtils.isBlank(strDate) || StringUtils.isBlank(formatter)) {
                return false;
            }
            try {
                sdf = new SimpleDateFormat(formatter);
                sdf.setLenient(false);
                Date date = sdf.parse(strDate, pos);
                if (date == null) {
                    return false;
                } else {
                    if (pos.getIndex() > sdf.format(date).length()) {
                        return false;
                    }
                    return true;
                }
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
        }
        
        public static void main(String[] args)
        {
    //        String timeDir=DateUtil.dateToString(new Date(),DateUtil.ISO_EXPANDED_DATE_FORMAT);
    //        System.out.println(timeDir);
            boolean flag = DateUtil.isValidDate("1990-10-32", DateUtil.ISO_EXPANDED_DATE_FORMAT);
            System.out.println(flag);
        }
        
    }
    View Code
  • 相关阅读:
    robots.txt
    procdump和mimikatz工具配合破解windows账户口令
    通过vbs脚本控制方向盘按键
    批处理删除文件或文件夹代码
    彩色线条雨特效html代码
    secureCRT
    chrome 更新flash插件
    python命令行下安装redis客户端
    FastJson使用
    Redis 学习(二)
  • 原文地址:https://www.cnblogs.com/callbin/p/14482907.html
Copyright © 2020-2023  润新知