• 时间格式转换类


    时间格式转换类

    /**
     * Copyright:信息科技有限公司 版权所有 违者必究 2013
     */
    
    import org.apache.commons.lang3.StringUtils;
    import org.springframework.util.Assert;
    
    import java.text.DateFormat;
    import java.text.MessageFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    /**
     * 时间日期的工具类
     *
     * @author : chenxh(quickselect@163.com)
     * @date: 13-7-1
     */
    public class DateUtil {
    
        public static final String DATETIME_FORMAT = "yyyyMMddHHmmss";
        public static final SimpleDateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat(DATETIME_FORMAT);
        public static final String DATE_FORMAT = "yyyyMMdd";
        public static final String SHOW_DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
        public static final String SHOW_DATE_FORMAT = "yyyy-MM-dd";
    
        /**
         * 获取当前时间串,格式为:yyyymmddHHMiSS
         *
         * @return
         */
        public static final String getCurrDatetime() {
            return format(new Date(), DATETIME_FORMAT);
        }
    
        /**
         * 获取当前日期串,格式为yyyymmdd
         *
         * @return
         */
        public static final String getCurrDate() {
            return format(new Date(), DATE_FORMAT);
        }
    
        /**
         * @param date      时间
         * @param formatStr 格式化串
         * @return
         */
        public static String format(Date date, String formatStr) {
            if(date != null){
    
                SimpleDateFormat sdf = new SimpleDateFormat(formatStr);
                return sdf.format(date);
            }else{
                return "";
            }
        }
    
        /**
         * 对{@code date}字符串,采用<code>0</code>右补齐到{@code length}的长度
         *
         * @param date
         * @param length
         * @return
         */
        public static String pad0(String date, int length) {
            return padChar(date, length, '0');
        }
    
        /**
         * 对{@code date}字符串,采用<code>9</code>右补齐到{@code length}的长度
         *
         * @param date
         * @param length
         * @return
         */
        public static String pad9(String date, int length) {
            return padChar(date, length, '9');
        }
    
        private static String padChar(String date, int length, char theChar) {
            if (StringUtils.isEmpty(date)) {
                date = "";
            }
            return StringUtils.rightPad(date, length, theChar);
        }
    
        /**
         * {@code time1}是否小于{@code time2},即类似于<pre>time1 < time2</pre>。 如果{@code time2}为<code>null</code>,
         * 则视为最小。
         *
         * @param time1 时间字符串,格式为 yyyyMMddHHmmss,不足14位后补0
         * @param time2 时间字符串,格式为 yyyyMMddHHmmss,不足14位后补0
         * @return
         */
        public static boolean lessThan(String time1, String time2) {
            if (StringUtils.isEmpty(time1)) {
                if (StringUtils.isEmpty(time2)) {
                    return false;
                } else {
                    return true;
                }
            } else {
                return time1.compareTo(time2) < 0;
            }
        }
    
    
        /**
         * {@code time1}是否大于{@code time2},即类似于<pre>time1 > time2</pre>。如果{@code time2}为<code>null</code>,
         * 则视为最大。
         *
         * @param time1 时间字符串,格式为 yyyyMMddHHmmss,不足14位后补9
         * @param time2 时间字符串,格式为 yyyyMMddHHmmss,不足14位后补9
         * @return
         */
        public static boolean greaterThan(String time1, String time2) {
            if (StringUtils.isEmpty(time1)) {
                if (StringUtils.isEmpty(time2)) {
                    return false;
                } else {
                    return true;
                }
            } else {
                return time1.compareTo(time2) > 0;
            }
        }
    
        /**
         * 将<code>datetime</code>字符串时间转换为毫秒数
         *
         * @param datetime 长度必须大于等于8而小于等于14,格式为 yyyyMMddHHmmss,不足14位后补0
         * @return
         */
        public static long toMilliseconds(String datetime) {
            return parseDate(datetime).getTime();
        }
    
        /**
         * 将格式为{@link #DATETIME_FORMAT}的时间格式解析为Date对象,{@code datetime}的长度必须大于8小于14.
         *
         * @param datetime
         * @return
         */
        public static Date parseDate(String datetime) {
            Assert.notNull(datetime);
            Assert.isTrue(datetime.length() >= 4 && datetime.length() <= 14, "长度必须在4~14之间");
            DateFormat dateFormat = new SimpleDateFormat(DATETIME_FORMAT);
            try {
                if (datetime.length() < 14) {
                    dateFormat = new SimpleDateFormat(DATETIME_FORMAT.substring(0, datetime.length()));
                }
                return dateFormat.parse(datetime);
            } catch (ParseException e) {
                throw new IllegalArgumentException("入参datetime:" + datetime + "解析异常,请检查格式必须为:"
                        + DATETIME_FORMAT.substring(0, datetime.length()));
            }
        }
    
        /**
         * 将字符串时间解析为对象
         *
         * @param datetime
         * @param format
         * @return
         */
        public static Date parseDate(String datetime, String format) {
            Assert.notNull(datetime);
            Assert.notNull(format);
            Assert.isTrue(datetime.length() == format.length(), "值和格式串的长度不一致");
            DateFormat dateFormat = new SimpleDateFormat(format);
            try {
                return dateFormat.parse(datetime);
            } catch (ParseException e) {
                throw new IllegalArgumentException(
                        MessageFormat.format("入参datetime:{1}解析异常,请检查格式必须为:{2}", datetime, format));
            }
        }
    }
  • 相关阅读:
    DataGridView编辑后立即更新到数据库的两种方法
    Azure 意外重启, 丢失sql server master表和 filezilla
    欧洲美食精选-德国篇
    Azure 负载均衡和可用性集
    windows Azure 域名绑定
    Azure billing 分析(2)
    Azure billing 分析
    试用windows Azure
    Excel公式无法重算,暂无法解决
    iphone 语音备忘录 同步问题
  • 原文地址:https://www.cnblogs.com/xuerong/p/5955741.html
Copyright © 2020-2023  润新知