zoukankan      html  css  js  c++  java
  • JAVA 日期工具类的总结

      一般,在项目中,我们会会经常使用到日期的各种方式的处理,在各个业务逻辑操作中,都需要相关的日期操作,因此,实现项目中的日期工具类的提出,还是十分重要的,下面,就项目中常用到的日期的相关操作方式,做了一个小的工具类,方便项目使用,也方便以后的复用和查询.下面见代码:

    /**
     * 
     * 〈一句话功能简述〉<br>
     * 〈功能详细描述〉 日期工具类
     * 
     * @author 12061799
     * @see [相关类/方法](可选)
     * @since [产品/模块版本] (可选)
     */
    public class DateUtil {
    
        // 日期格式 年.
        public static final String YEAR_FORMAT = "yyyy";
    
        // 默认日期格式.
        public static final String DEFALT_DATE_FORMAT = "yyyy-MM-dd";
    
        // 默认时间格式.带时分秒
        public static final String DEFUALT_TIMESTAMPE_FORMAT = "yyyy-MM-dd hh:mm:ss sss";
    
        // 时间格式yyyyMMddHHmmssSSS.
        public static final String DATE_FORMATE_YYYYMMDDHHMMSSSSS = "yyyyMMddHHmmssSSS";
    
        // 时间格式yyyy-MM-dd HH:mm:ss.
        public static final String DATE_FORMATE_YYYYMMDDHHMMSS = "yyyy-MM-dd HH:mm:ss";
    
        // 时间格式yyMMdd.
        public static final String DATE_FORMATE_YYMMDD = "yyMMdd";
    
        // 时间格式DATE_FORMATE_YYYYMMDD.
        public static final String DATE_FORMATE_YYYYMMDD = "yyyyMMdd";
    
        // 时间格式yyyyMMddHHmmssSSS.
        public static final String DATE_FORMATE_YYMMDDHHMMSS = "yyMMddHHmmss";
    
        /**
         * private constructor
         */
        private DateUtil() {
    
        }
    
        /**
         * 取得现在时间.
         * 
         * @return 现在时间
         */
        public static String getCurrentSqlTimestampString() {
            Date today = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat(DEFUALT_TIMESTAMPE_FORMAT);
            return sdf.format(today);
        }
    
        /**
         * 取得指定格式的时间格式字符串
         * 
         * @return 现在时间
         */
        public static String getDateStringByFormat(String format) {
            Date today = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            return sdf.format(today);
        }
    
        /**
         * 将传入的时间转换为指定时间格式字符串.
         * 
         * @param time 传入时间
         * @param dateFormat 时间格式
         * @return 时间字符串
         */
        public static String formatTimeStamp(Timestamp time, String dateFormat) {
            if (time == null) {
                return "";
            }
    
            SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
            return sdf.format(time);
        }
    
        /**
         * 取得现在时间.
         * 
         * @return 现在时间
         */
        public static Timestamp getCurrentSqlTimestamp() {
            return new Timestamp(System.currentTimeMillis());
        }
    
        /**
         * 取得今天日期字符串.
         * 
         * @return 今天日期字符串
         */
        public static String getCurrentDay() {
            Date today = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat(DEFALT_DATE_FORMAT);
            return sdf.format(today);
        }
    
        /**
         * 取得今天日期+时间字符串.
         * 
         * @return 今天日期字符串 YYYY-MM-dd HH:mm:ss
         */
        public static String getCurrentDayTime() {
            Date today = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMATE_YYYYMMDDHHMMSS);
            return sdf.format(today);
        }
    
        /**
         * 将传入的时间转换为默认时间格式字符串.
         * 
         * @param time 传入时间
         * @return 时间字符串
         */
        public static String formatTimeStampDefualt(Timestamp time) {
            if (time == null) {
                return "";
            }
            SimpleDateFormat sdf = new SimpleDateFormat(DEFUALT_TIMESTAMPE_FORMAT);
            return sdf.format(time);
        }
    
        /**
         * 将传入日期转换为默认格式字符串.
         * 
         * @param date 传入日期
         * @return 日期字符串
         */
        public static String formatDateDefault(Date date) {
            if (date == null) {
                return null;
            }
            SimpleDateFormat sdf = new SimpleDateFormat(DEFALT_DATE_FORMAT);
            return sdf.format(date);
        }
    
        /**
         * 功能描述: 根据指定的格式化规则返回当前日期
         * 
         * @param string
         * @return [相关类/方法](可选)
         * @since [产品/模块版本](可选)
         */
        public static String getCurrentDate(String formater) {
            SimpleDateFormat format = new SimpleDateFormat(formater);
            return format.format(new Date());
        }
    
        /**
         * 将传入日期转换为指定格式字符串.
         * 
         * @param date 传入日期
         * @param dateFormat 时间格式
         * @return 日期字符串
         */
        public static String formatDateByDateFormate(Date date, String dateFormat) {
            if (date == null) {
                return null;
            }
    
            SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
            return sdf.format(date);
        }
    
        /**
         * 取得当前年 .
         * 
         * @return 当前年
         */
        public static String getCurrentYear() {
            Date today = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat(YEAR_FORMAT);
            return sdf.format(today);
        }
    
        public static Date formatDate(String date) throws ParseException {
            DateFormat df = new SimpleDateFormat(DEFALT_DATE_FORMAT);
            return df.parse(date);
        }
    
        /**
         * 
         * 功能描述: <br>
         * 计算距今天指定天数的日期
         * 
         * @param days
         * @return
         * @since 20130630
         */
        public static String getDateAfterDays(int days) {
            Calendar date = Calendar.getInstance();// today
            date.add(Calendar.DATE, days);
            SimpleDateFormat simpleDate = new SimpleDateFormat(DEFALT_DATE_FORMAT);
            return simpleDate.format(date.getTime());
        }
    
        /**
         * 在指定的日期的前几天或后几天
         * 
         * @param source 源日期(yyyy-MM-dd)
         * @param days 指定的天数,正负皆可
         * @return
         * @throws ParseException
         */
        public static String addDays(String source, int days) {
            Date date = null;
            try {
                date = formatDate(source);
            } catch (ParseException e) {
            }
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.add(Calendar.DATE, days);
            SimpleDateFormat dateFormat = new SimpleDateFormat(DEFALT_DATE_FORMAT);
            return dateFormat.format(calendar.getTime());
        }
    
        /**
         * 
         * 功能描述: <br>
         * 〈功能详细描述〉校验正确的日期格式
         * 
         * @param str
         * @return
         * @see [相关类/方法](可选)
         * @since [产品/模块版本](可选)
         */
        public static boolean isValidDate(String str, String format) {
            boolean convertSuccess = true;
            // 指定日期格式为四位年/两位月份/两位日期,注意yyyy/MM/dd区分大小写;
            SimpleDateFormat sf = new SimpleDateFormat(format);
            try {
                // 设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2007/02/29会被接受,并转换成2007/03/01
                sf.setLenient(false);
                sf.parse(str);
            } catch (ParseException e) {
                // 如果throw java.text.ParseException或者NullPointerException,就说明格式不对
                convertSuccess = false;
            }
            return convertSuccess;
        }
    
        /**
         * 
         * 功能描述: <br>
         * 〈功能详细描述〉计算时间相隔的天数
         *
         * @param beginDateStr
         * @param endDateStr
         * @return
         * @see [相关类/方法](可选)
         * @since [产品/模块版本](可选)
         */
        public static long getDaySub(String beginDateStr, String endDateStr) {
            long day = 0;
            SimpleDateFormat format = new SimpleDateFormat(DateUtil.DEFALT_DATE_FORMAT);
            Date beginDate;
            Date endDate;
            try {
                beginDate = format.parse(beginDateStr);
                endDate = format.parse(endDateStr);
                day = (endDate.getTime() - beginDate.getTime()) / (24 * 60 * 60 * 1000);
            } catch (ParseException e) {
                throw new RuntimeException("传入日期参数有误!",e);
            }
            return day;
        }
    }

    工具类中的方法,一般都是定义成共有的静态防范,方便其他的业务的注入工具类,调用类的方法.注意:

    1,首先定义了一系列的日期格式字符串,方便获取任意的格式的时间字符串

    2,定义了一些操作方法,方便获取时间信息,以及一些计算操作,

    3.静态的方法,直接使用类名调用即可,非常适用项目中的实时调用.

  • 相关阅读:
    61. 最长不含重复字符的子字符串
    60. 礼物的最大价值 (未理解)
    59. 把数字翻译成字符串
    58. 把数组排成最小的数
    57. 数字序列中某一位的数字 (不懂)
    spring data jpa 官方文档
    idea 编译报错 源发行版 1.8 需要目标发行版 1.8
    idea maven 依赖报错 invalid classes root
    solr
    spring boot 官方文档
  • 原文地址:https://www.cnblogs.com/lilin0719/p/5253680.html
Copyright © 2011-2022 走看看