zoukankan      html  css  js  c++  java
  • 通用 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
  • 相关阅读:
    SoapUI 使用笔记
    git 使用笔记(二)
    git 使用笔记(一)
    jquery 拓展
    hdu 1024 Max Sum Plus Plus (DP)
    hdu 2602 Bone Collector (01背包)
    hdu 1688 Sightseeing (最短路径)
    hdu 3191 How Many Paths Are There (次短路径数)
    hdu 2722 Here We Go(relians) Again (最短路径)
    hdu 1596 find the safest road (最短路径)
  • 原文地址:https://www.cnblogs.com/callbin/p/14482907.html
Copyright © 2011-2022 走看看