zoukankan      html  css  js  c++  java
  • java DateTimeUtil 日期工具类

    package com.sicdt.library.core.utils;
    
    import java.sql.Timestamp;
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;
    
    import org.apache.commons.lang3.StringUtils;
    
    /**
     * 
     * <br>类 名: DateTimeUtil 
     * <br>描 述: 日期时间工具类 
     * <br>作 者: shizhenwei 
     * <br>创 建: 2017年5月15日 
     * <br>版 本: v0.0.2 
     * <br>
     * <br>历 史: (版本) 作者 时间 注释
     */
    public class DateTimeUtil {
        public static final String DIVIDE_LINE = "-";
        public static final String DIVIDE_COLON = ":";
        
        public static final long SECOND = 1000;
        public static final long MINUTE = 60 * SECOND;
        public static final long HOUR = 60 * MINUTE;
        public static final long DAY = 24 * HOUR;
        public static final long WEEK = 7 * DAY;
        public static final String YEARFORMAT = "yyyy";
        public static final String MONTHFORMAT = "yyyy-MM";
        public static final String SHORTFORMAT = "yyyy-MM-dd";
        public static final String SHORTFORMATNOSPIT = "yyyyMMdd";
        public static final String LONGFORMATNOSPIT = "yyyyMMddHHmmss";
        public static final String LONGFORMAT = "yyyy-MM-dd HH:mm:ss";
        public static final String SUPERLONGFORMAT = "yyyy-MM-dd HH:mm:ss sss";
        private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
        public static final int FIELD_YEAR = Calendar.YEAR;
        public static final int FIELD_MONTH = Calendar.MONTH;
        public static final int FIELD_DATE = Calendar.DATE;
        
        /**
         * 时间戳格式化 yyyy-MM-dd HH:mm:ss
         */
        public static String getTimestampString(java.util.Date date) {
            return sdf.format(date).toString();
        } 
        
        /**
         * 系统当前时间戳
         */
        public static Timestamp getTimestamp(){
            java.text.SimpleDateFormat myFormat = new SimpleDateFormat(LONGFORMAT);
            long stamp = System.currentTimeMillis();
            String timestamp = myFormat.format(stamp);
            return Timestamp.valueOf(timestamp);
        }
        
        
        /**
         * 日期转时间戳
         */
        public static Timestamp getTimestamp(java.util.Date date) {
            return Timestamp.valueOf(getTimestampString(date));
        } 
        
        /**
         * 字符串转时间戳
         */
        public static Timestamp getTimestamp(String timestamp) {
            if(StringUtils.isEmpty(timestamp)){
                return null;
            }
            return Timestamp.valueOf(timestamp);
        } 
        
        /**
         * 时间格式化 yyyy-MM-dd
         */
        public static String getDate() {
            java.text.SimpleDateFormat myFormat = new SimpleDateFormat(SHORTFORMAT);
            return myFormat.format(System.currentTimeMillis());
        }
        
        /**
         * 时间格式化 yyyy-MM-dd
         */
        public static String getDate(java.util.Date date) {
            return getDate(date, SHORTFORMAT);
        }
        
        /**
         * 时间格式化 yyyy-MM-dd
         */
        public static String getDate(java.util.Date date, String format) {
            String result = null;
            try {
                java.text.SimpleDateFormat myFormat = new SimpleDateFormat(format);
                result = myFormat.format(date);
            } catch (Exception e) {
                return null;
            }
            return result;
        }
        
        /**
         * 时间格式化 yyyy-MM-dd HH:mm:ss
         * */
        public static String getDateTime() {
            return getDateTime(new java.util.Date());
        }
        
        /**
         * 时间格式化 yyyy-MM-dd HH:mm:ss
         * */
        public static String getDateTime(java.util.Date date) {
            java.text.SimpleDateFormat d = new java.text.SimpleDateFormat(LONGFORMAT);
            return d.format(date);
        }
        
        /**
         * 时间格式化 yyyy-MM-dd
         * */
        public static String getShortDate(java.util.Date date){
            if(date==null)
                date = new java.util.Date();
            return getDate(date, SHORTFORMAT);
        }
        
        /**
         * 时间格式化 yyyy-MM-dd HH:mm:ss
         * */
        public static String getLongDate(java.util.Date date){
            if(date==null)
                date = new java.util.Date();
            return getDateTime(date);
        }
        
        /**
         * 时间格式化 yyyy-MM-dd HH:mm:ss
         * */
        public static String getTimestampStr(){
            java.text.SimpleDateFormat myFormat = new SimpleDateFormat(LONGFORMAT);
            return myFormat.format(System.currentTimeMillis());
        }
        
        /**
         * 时间格式化 yyyyMMddHHmmss
         * */
        public static String getLongTime(){
            java.text.SimpleDateFormat myFormat = new SimpleDateFormat(LONGFORMATNOSPIT);
            return myFormat.format(System.currentTimeMillis());
        }
        
        /**
         * 时间格式化 yyyyMMddHHmmss
         * */
        public static String getLongTime(long ts){
            java.text.SimpleDateFormat myFormat = new SimpleDateFormat(LONGFORMATNOSPIT);
            return myFormat.format(ts);
        }
        
        /**
         * 时间戳TS
         */
        public static String getTS(){
            long ts = System.currentTimeMillis();
            return Long.toString(ts);
        }
        
        /**
         * N年后
         * */
        public static java.util.Date addYear(java.util.Date date, int amount) {
            return add(date, Calendar.YEAR, amount);
        }
        
        /**
         * N个月后
         * */
        public static java.util.Date addMonth(java.util.Date date, int amount) {
            return add(date, Calendar.MONTH, amount);
        }
        
        /**
         * N天后
         * */
        public static java.util.Date addDay(java.util.Date date, int amount) {
            return add(date, Calendar.DATE, amount);
        }
        
        /**
         * N(年、月、天)后
         * */
        public static java.util.Date add(java.util.Date date, int field, int amount) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.add(field, amount);
            return calendar.getTime();
        }
        
        /**
         * N(年、月、天)后
         * */
        public static java.util.Date add(String datestr, int field, int amount) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(formatDate(datestr));
            calendar.add(field, amount);
            return calendar.getTime();
        }
            
        /**
         * N(年、月、天)后(字符串形式)
         * */
        public static String add(String datestr, int field, int amount, String format) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(formatDate(datestr,format));
            calendar.add(field, amount);
            return getDate(calendar.getTime(), format);  
        }
        
        /***
         * 获取当前时间,不含日期
         * @return
         */
        public static String getCurrentTime(){
            SimpleDateFormat sdf = new SimpleDateFormat("kk:mm:ss");
            String time = sdf.format(Calendar.getInstance().getTime());
            return time;
        }
        
        /**
         * 将字符串转为为日期
         */
        public static java.util.Date formatDate(String datestr) {
            if(19==datestr.length()){
                return formatDate(datestr, LONGFORMAT);
            }else{
                return formatDate(datestr, SHORTFORMAT);
            }
        }
        
        /**
         * 将字符串转为为日期
         */
        public static java.util.Date formatDate(String datestr, String format) {
            try {
                if(StringUtils.isEmpty(datestr)){
                    return null;
                }
                java.text.SimpleDateFormat myFormat = new SimpleDateFormat(format);
                Date date = myFormat.parse(datestr);
                return date;
            } catch (Exception e) {
                return null;
            }
        }
        
        /***
         * 月份的开始结束日期
         * @param year
         * @param month
         * @param keys
         * @return
         */
        public static Map<String, String> getMonthStartDateAndEndDate(int year, int month,
                String... keys) {
            SimpleDateFormat d = new SimpleDateFormat(LONGFORMAT);
            Map<String, String> date = new HashMap<String, String>();
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.YEAR, year);
            calendar.set(Calendar.MONTH, month - 1);
            calendar.set(Calendar.DAY_OF_MONTH, 1);
            date.put(keys[0], d.format(calendar.getTime()));
            calendar.add(Calendar.MONTH, 1);
            calendar.add(Calendar.DAY_OF_MONTH, -1);
            date.put(keys[1], d.format(calendar.getTime()));
            return date;
        }
        
        /**
         * 时间格式化
         */
        public static String getTimeString(String time) {
            String[] ti = time.split(":");
            if (ti[1].length() == 1) {
                time = ti[0] + "0" + ti[1];
            } else {
                time = ti[0] + ti[1];
            }
            return time;
        }
        
        /**
         * <br>描 述: 获取计费模式的年月  2017-06-26 至 2017-07-25 为 2017年07月 以此类推
         * <br>作 者: shizhenwei 
         * <br>历 史: (版本) 作者 时间 注释
         * @param 2017-06-19/2016-06-19 15:35:35
         * @return
         */
        public static String getSicdtYearMonth(String datestr){
            String[] fileds = datestr.split(DIVIDE_LINE);
            if(Integer.valueOf(fileds[2])>25){
                Date date = add(datestr, FIELD_MONTH, 1);
                return getDate(date, MONTHFORMAT);
            }
            return datestr.substring(0, 7);
        }
        
        public static String getSicdtYearMonth(){
            return getSicdtYearMonth(getDate());
        }
        
        @SuppressWarnings("deprecation")
        public static String timeString() {
            Date date = new Date();
            return getTimeString(date.getHours() + ":" + date.getMinutes());
        }
        
    
        /**
         * 月-天数
         * */
        public static int getDayNum(int year, int month) {
            if (month == 2) {
                return year % 400 != 0 && (year % 4 != 0 || year % 100 == 0) ? 28
                        : 29;
            }
            String SmallMonth = ",4,6,9,11,";
            return SmallMonth.indexOf(String.valueOf(String
                    .valueOf((new StringBuffer(",")).append(String.valueOf(month))
                            .append(",")))) < 0 ? 31 : 30;
        }
        /***
         * 两个日期之间的天数
         * @param date1
         * @param date2
         * @return
         */
        public static int DateDiff(Date date1, Date date2) {
            int i = (int) ((date1.getTime() - date2.getTime()) / 3600 / 24 / 1000);
            return i;
        }
        /**
         * 日期拆分,取年或月或日    Y-年  M-月  D-日
         * @param strDate
         * @param style
         * @return
         */
        public static int getYearMonthDate(String strDate, String style) {
            int year;
            int month;
            int day;
            int firstDash;
            int secondDash;
            if (strDate == null) {
                return 0;
            }
            firstDash = strDate.indexOf('-');
            secondDash = strDate.indexOf('-', firstDash + 1);
            if ((firstDash > 0) & (secondDash > 0)
                    & (secondDash < strDate.length() - 1)) {
                year = Integer.parseInt(strDate.substring(0, firstDash));
                month = Integer.parseInt(strDate.substring(firstDash + 1,
                        secondDash));
                day = Integer.parseInt(strDate.substring(secondDash + 1));
            } else {
                return 0;
            }
            if (style.equalsIgnoreCase("Y")) {
                return year;
            } else if (style.equalsIgnoreCase("M")) {
                return month;
            } else if (style.equalsIgnoreCase("D")) {
                return day;
            } else {
                return 0;
            }
        }
        
        /***
         * 是否是年份的第一天
         * @param date
         * @return
         */
        public static boolean isYearFirstDay(java.sql.Date date) {
            boolean i = false;
            if ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 1)
                    && (DateTimeUtil.getYearMonthDate(date.toString(), "D") == 1)) {
                i = true;
            }
            return i;
        }
        /**
         * 是否是半年的第一天
         * @param date
         * @return
         */
        public static boolean isHalfYearFirstDay(java.sql.Date date) {
            boolean i = false;
            if (((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 1) && (DateTimeUtil
                    .getYearMonthDate(date.toString(), "D") == 1))
                    || ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 7) && (DateTimeUtil
                            .getYearMonthDate(date.toString(), "D") == 1))) {
                i = true;
            }
            return i;
        }
        /**
         * 取半年的第一天
         * @param date
         * @return
         */
        public static String getHalfYearFirstDay(java.sql.Date date) {
            String month = "01";
            if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 7) {
                month = "07";
            }
            String day = Integer.toString(DateTimeUtil.getYearMonthDate(
                    date.toString(), "Y")) + "-" + month + "-01";
            return day;
        }
        /**
         * 是否是半年最后一天
         * */
        public static boolean isHalfYearLastDay(java.sql.Date date) {
            boolean i = false;
            if (((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 12) && (DateTimeUtil
                    .getYearMonthDate(date.toString(), "D") == 31))
                    || ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 6) && (DateTimeUtil
                            .getYearMonthDate(date.toString(), "D") == 30))) {
                i = true;
            }
            return i;
        }
        /***
         * 取半年最后一天
         * @param date
         * @return
         */
        public static String getHalfYearLastDay(java.sql.Date date) {
            String month = "-06-30";
            if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 7) {
                month = "-12-31";
            }
            String day = Integer.toString(getYearMonthDate(date.toString(), "Y"))
                    + "-" + month;
            return day;
        }
    
        /***
         *是否是年度最后一天
         * @param date
         * @return
         */
        public static boolean isYearLastDay(java.sql.Date date) {
            boolean i = false;
            if ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 12)
                    && (DateTimeUtil.getYearMonthDate(date.toString(), "D") == 31)) {
                i = true;
            }
            return i;
        }
    
        /**
         * 是否季度第一天
         * */
        public static boolean isQuarterFirstDay(java.sql.Date date) {
            boolean i = false;
            if (((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 1)
                    || (DateTimeUtil.getYearMonthDate(date.toString(), "M") == 4)
                    || (DateTimeUtil.getYearMonthDate(date.toString(), "M") == 7) || (DateTimeUtil
                    .getYearMonthDate(date.toString(), "M") == 10))
                    && (DateTimeUtil.getYearMonthDate(date.toString(), "D") == 1)) {
                i = true;
            }
            return i;
        }
        /***
         * 季度第一天
         * @param date
         * @return
         */
        public static String getQuarterFirstDay(java.sql.Date date) {
            String month = "01";
            if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 10) {
                month = "10";
            } else if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 7) {
                month = "07";
            } else if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 4) {
                month = "04";
            } else if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 1) {
                month = "01";
            }
    
            String day = Integer.toString(DateTimeUtil.getYearMonthDate(
                    date.toString(), "Y")) + "-" + month + "-01";
            return day;
        }
    
    
        /**
         * 是否季度最后一天
         * @param date
         * @return
         */
        public static boolean isQuarterLastDay(java.sql.Date date) {
            boolean i = false;
            if ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 3)
                    && (DateTimeUtil.getYearMonthDate(date.toString(), "D") == 31)) {
                i = true;
            }
            if ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 6)
                    && (DateTimeUtil.getYearMonthDate(date.toString(), "D") == 30)) {
                i = true;
            }
            if ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 9)
                    && (DateTimeUtil.getYearMonthDate(date.toString(), "D") == 30)) {
                i = true;
            }
            if ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 12)
                    && (DateTimeUtil.getYearMonthDate(date.toString(), "D") == 31)) {
                i = true;
            }
            return i;
        }
        /**
         * 季度最后一天
         * @param date
         * @return
         */
        public static String getQuarterLastDay(java.sql.Date date) {
            String month = "-03-31";
            if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 10) {
                month = "-12-31";
            } else if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 7) {
                month = "-09-30";
            } else if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 4) {
                month = "-06-30";
            }
    
            String day = Integer.toString(DateTimeUtil.getYearMonthDate(
                    date.toString(), "Y")) + "-" + month;
            return day;
        }
    
        /***
         * 是否月份最后一天
         * @param date
         * @return
         */
        public static boolean isMonthLastDay(Date date) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar.getActualMaximum(Calendar.DAY_OF_MONTH) == calendar.get(Calendar.DAY_OF_MONTH);
        }
        
        /**
         * 是否月份第一天
         * @param date
         * @return
         */
        public static boolean isMonthFisrtDay(Date date) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar.getActualMinimum(Calendar.DAY_OF_MONTH) == calendar.get(Calendar.DAY_OF_MONTH);
        }
        
        /**
         * 月份第一天日期
         * @param date
         * @return
         */
        public static Date getMonthFisrtDay(Date date){
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
            return calendar.getTime();
        }
        
        /**
         * 星期的第几天
         * @param strDate  yy-mm-dd
         * @return
         */
        public static int getDateInWeek(String strDate) {
            DateFormat df = DateFormat.getDateInstance();
            try {
                df.parse(strDate);
                java.util.Calendar c = df.getCalendar();
                int day = c.get(Calendar.DAY_OF_WEEK) - Calendar.SUNDAY;
                return day;
            } catch (ParseException e) {
                return -1;
            }
        }
        
        
        public static java.sql.Date getSqlDate(java.util.Date date) {
            java.sql.Date result = null;
            try {
                java.text.SimpleDateFormat myFormat = new SimpleDateFormat(LONGFORMAT);
                String mystrdate = myFormat.format(date);
                result = java.sql.Date.valueOf(mystrdate);
            } catch (Exception e) {
                return null;
            }
            return result;
        }
        
        
        /**
         * 上个月
         * @param dt
         * @return
         */
        @SuppressWarnings("deprecation")
        public static String getUpMDate(Date dt) {
            dt.setDate(1);
            dt.setDate(dt.getDate() - 1);
            return dt.toLocaleString();
        }
    
    
        public static String getShortDate(String dt) {
            if (dt != null) {
                java.text.SimpleDateFormat myFormat = new SimpleDateFormat(SHORTFORMAT);
                try {
                    Date date = myFormat.parse(dt);
                    return getDate(date, SHORTFORMATNOSPIT);
                } catch (ParseException e) {
                    return dt;
                }
            } else
                return dt;
        }
    
        
        public static String getLongDate(String dt) {
            if (dt != null) {
                java.text.SimpleDateFormat myFormat = new SimpleDateFormat(SHORTFORMAT);
                try {
                    Date date = myFormat.parse(dt);
                    return getDate(date, SHORTFORMAT);
                } catch (ParseException e) {
                    return dt;
                }
            } else
                return dt;
        }
    
    
        public static boolean isSameYearMonth(String date) {
            try {
                String currdate = getDate();
                currdate = getShortDate(currdate).substring(0, 6);
                String lastdate = getShortDate(date).substring(0, 6);
                if (lastdate.equals(currdate)) {
                    return true;
                } else {
                    return false;
                }
            } catch (NumberFormatException e) {
                return false;
            }
        }
    }
  • 相关阅读:
    vue中使用v-bind="$attrs"和v-on="$listeners"进行多层组件监听
    钉钉小程序开发遇到的坑
    promise、async、await、settimeout异步原理与执行顺序
    js获取url参数值的几种方式
    ES6解构赋值
    2019年前端面试题
    浏览器兼容问题踩坑收集
    react+antd分页 实现分页及页面刷新时回到刷新前的page
    无侵入埋点
    CSS学习笔记(三)空白符和换行
  • 原文地址:https://www.cnblogs.com/zwcry/p/8483195.html
Copyright © 2011-2022 走看看