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.静态的方法,直接使用类名调用即可,非常适用项目中的实时调用.

  • 相关阅读:
    内网渗透笔记
    shift粘滞键后门创建/复原批处理
    通过Wireshark抓包进行Cookie劫持
    最全前端资源汇集 (持续整理中)
    HTML5教程之html 5 本地数据库(Web Sql Database)
    myslq 基本命令
    Node.js面试题:侧重后端应用与对Node核心的理解
    44个 Javascript 变态题解析 (上下)
    BAT及各大互联网公司前端笔试面试题--Html,Css篇
    Web前端面试题集锦
  • 原文地址:https://www.cnblogs.com/lilin0719/p/5253680.html
Copyright © 2011-2022 走看看