zoukankan      html  css  js  c++  java
  • DateUtils工具类

    DateUtils.java

    package com.alphajuns.ssm.util;
    
    import org.apache.commons.lang.time.DateFormatUtils;
    
    import java.sql.Timestamp;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.List;
    
    public class DateUtils {
    
        /**
         * <p>Field DATEPATTERNYYYYVMMVDD: change date to type "yyyy-MM-dd" </p>
         */
        public static final String DATEPATTERNYYYYVMMVDD = "yyyy-MM-dd";
    
        /**
         * <p>Field DATEPATTERNYYYYVMMVDD: change date to type "yyyy/MM/dd HH:mm:ss" </p>
         */
        public static final String DATEWITH_H_M_S = "yyyy-MM-dd HH:mm:ss";
    
        public static final String YYYY_MM_DD = "yyyy-MM-dd";
    
        /**
         * Description: 时间戳转日期字符串
         * @param t t
         * @param pattern pattern
         * @return String
         */
        public static String getDateFromTimestampByPattern(Timestamp t, String pattern) {
            if (t != null) {
                return DateFormatUtils.format(new Date(t.getTime()), pattern);
            } else {
                return null;
            }
        }
    
        /**
         * Description: 日期转日期字符串
         * @param t t
         * @param pattern pattern
         * @return String
         */
        public static String getStrFromDateByPattern(Date t, String pattern) {
            if (t != null) {
                return DateFormatUtils.format(t, pattern);
            } else {
                return null;
            }
        }
    
        /**
         * <p>Description:  将当前日期加减n天数。 如传入整型-5 意为将当前日期减去5天的日期 如传入整型5 意为将当前日期加上5天后的日期 返回字串 例(19990203)</p>
         * @param format format 格式化的类型    例如:2015-05-06 ,加7天  =2015-05-13
         * @param days days 天数
         * @return String
         */
        public static String dateAdd(int days, String format) {
            // 日期处理模块 (将日期加上某些天或减去天数)返回字符串
            Calendar calendar;
            calendar = Calendar.getInstance();
            // 设置负数时,进行减计算
            calendar.add(Calendar.DAY_OF_YEAR, days);
    
            SimpleDateFormat sdfd ;
            sdfd = new SimpleDateFormat(format);
    
            String formatDate;
            formatDate = sdfd.format(calendar.getTime());
            return formatDate;
        }
    
        /**
         * 得到最近几个月的时间区间
         * @param months
         * @param format
         * @return
         */
        public static String[] getRecentMonthDateScope(int months, String format){
            SimpleDateFormat sdfd ;
            sdfd = new SimpleDateFormat(format);
            // 日期处理模块 (将日期加上月数)返回字符串
            Calendar calendar;
            calendar = Calendar.getInstance();
            Date currentDate = calendar.getTime();
            String endDate;
            endDate = sdfd.format(currentDate);
            // 设置-3,往前推三个月
            calendar.add(Calendar.MONTH, -3);
            String startDate;
            startDate = sdfd.format(calendar.getTime());
            return new String[]{startDate,endDate};
        }
    
        /**
         * 计算工作日
         * 具体节日包含哪些,可以在HolidayMap中修改
         * @param date 日期(源)
         * @param adddays 要加的天数
         * @exception throws [违例类型] [违例说明]
         * @version  [s001, 2010-11-19]
         */
        public static Date addDateByWorkDay(Date date,int adddays) {
            if (date == null) {
                return null;
            }
            Calendar src = Calendar.getInstance();
            src.setTime(date);
            boolean holidayFlag = false;
            for (int i = 0; i < adddays; i++) {
                // 把源日期加一天
                src.add(Calendar.DAY_OF_MONTH, 1);
                holidayFlag = checkHoliday(src);
                if (holidayFlag) {
                    i--;
                }
                System.out.println(src.getTime());
            }
            System.out.println("Final Result:"+src.getTime());
            return src.getTime();
        }
    
        /**
         * 校验指定的日期是否在节日列表中
         * 具体节日包含哪些,可以在HolidayMap中修改
         * @param src 要校验的日期(源)
         * @version  [s001, 2010-11-19]
         */
        public static boolean checkHoliday(Calendar src)
        {
            boolean result = false;
            // 先检查是否是周六周日(有些国家是周五周六)
            if (src.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY
                    || src.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
                return true;
            }
            List<Calendar> holidayList = new ArrayList<Calendar>();
            for (Calendar c : holidayList) {
                if (src.get(Calendar.MONTH) == c.get(Calendar.MONTH)
                        && src.get(Calendar.DAY_OF_MONTH) == c.get(Calendar.DAY_OF_MONTH))
                {
                    result = true;
                }
            }
            return result;
        }
    
        /**
         * <p>Description:  按格式将字符串转为Timestamp</p>
         * @param t t
         * @param pattern pattern
         * @return Timestamp
         */
        public static Timestamp getTimestampByPattern(String t, String pattern) {
            if (pattern == null || pattern.equals("")) {
                pattern = DATEWITH_H_M_S;
            }
            SimpleDateFormat sdf;
            sdf = new SimpleDateFormat(pattern);
            Date date = null;
            try {
                date = sdf.parse(t);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            if (date != null) {
                return new Timestamp(date.getTime());
            }
            return null;
        }
    
        /**
         * <p>Description:  按格式将字符串转为Timestamp</p>
         * @param t t
         * @param pattern pattern
         * @return Timestamp
         */
        public static Date getDateByPattern(String t, String pattern) {
            if (pattern == null || pattern.equals("")) {
                pattern = DATEPATTERNYYYYVMMVDD;
            }
            if (t == null || t.equals("") || t.equals("null")) {
                return null;
            }
            SimpleDateFormat sdf;
            sdf = new SimpleDateFormat(pattern);
            Date date = null;
            try {
                date = sdf.parse(t);
            } catch (ParseException e) {
                try {
                    date = DateUtils.getDateByPattern(t, DATEPATTERNYYYYVMMVDD,"yyyy-MM-dd HH:mm:ss","yyyy-MM-dd HH:mm");
                } catch (Exception e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
            return date;
        }
    
        /**
         * 从字符串获取日期,按时间来获取,从有秒的pattern开始,到只有天的pattern
         * @param t
         * @return
         * @throws Exception
         */
        public static Date getDateByDefaultPattern(String t) throws Exception{
            return DateUtils.getDateByPattern(t,"yyyy-MM-dd HH:mm:ss","yyyy-MM-dd HH:mm","yyyy-MM-dd");
        }
    
        /**
         * 按格式将字符串转为Timestamp
         * @param t
         * @param patterns
         * @return
         * @throws Exception
         */
        public static Timestamp getTimestampByPattern(String t, String ...patterns) throws Exception{
            Date  date = getDateByPattern(t, patterns);
            if(date!=null){
                Timestamp ts = new Timestamp(date.getTime());
                return ts;
            }else{
                return null;
            }
        }
    
        /**
         * 按格式将字符串转化为日期
         * @param t
         * @param patterns
         * @return
         * @throws Exception
         */
        public static Date getDateByPattern(String t, String ...patterns) throws Exception{
            if (patterns == null || patterns.equals("")) {
                patterns = new String[1];
                patterns[0] = DATEPATTERNYYYYVMMVDD;
            }
            if (t == null || t.equals("") || t.equals("null")){
                return null;
            }
            SimpleDateFormat sdf;
            Date date = null;
            for (String simplePattern : patterns) {
                try {
                    sdf = new SimpleDateFormat(simplePattern);
                    date = sdf.parse(t);
                    Calendar c = Calendar.getInstance();
                    c.setTime(date);
                    int s = c.get(Calendar.YEAR);
                    if (s == 1970) {
                        Calendar curr = Calendar.getInstance();
                        curr.setTime(new Date());
                        c.set(Calendar.YEAR, curr.get(Calendar.YEAR));
                        date = c.getTime();
                    }
                } catch (ParseException e) {
                    continue;
                }
                break;
            }
            return date;
        }
    
    
        /**
         * 获取指定格式的当前时间
         * @param format
         * @return
         */
        public static String getDayDate(String format) {
            SimpleDateFormat df ;
            df = new SimpleDateFormat(format);
            return df.format(new Date());
    
        }
    
        /**
         * 按格式将字符串时间转化为时间戳
         * @param t
         * @param pattern
         * @return
         */
        public static Timestamp getTimestamp(String t, String pattern) {
            SimpleDateFormat sdf;
            sdf = new SimpleDateFormat(pattern);
            Date date = null;
            try {
                date = sdf.parse(t);
            } catch (ParseException e) {
                e.printStackTrace();
            }
    
            if (date != null) {
                return new Timestamp(date.getTime());
            }
            return null;
        }
    
    }

    测试代码DateUtilsTest.java

    package com.alphajuns.junit;
    
    import com.alphajuns.ssm.util.DateUtils;
    import org.junit.Test;
    
    import java.sql.Timestamp;
    import java.util.Date;
    
    public class DateUtilsTest {
    
        /**
         * 将时间戳转化为指定格式日期字符串
         */
        @Test
        public void getDateFromTimestampByPattern() {
            Timestamp timestamp = new Timestamp(System.currentTimeMillis());
            String yyyyMMdd = "yyyy-MM-dd";
            String yyyyMMddHHmmss = "yyyy-MM-dd HH:mm:ss";
            String dateStr1 = DateUtils.getDateFromTimestampByPattern(timestamp, yyyyMMdd);
            System.out.println(dateStr1);
            String dateStr2 = DateUtils.getDateFromTimestampByPattern(timestamp, yyyyMMddHHmmss);
            System.out.println(dateStr2);
        }
    
        /**
         * 按指定格式获取日期字符串
         */
        @Test
        public void getStrFromDateByPattern() {
            String dateStr1 = DateUtils.getStrFromDateByPattern(new Date(), "yyyy-MM-dd");
            System.out.println(dateStr1);
            String dateStr2 = DateUtils.getStrFromDateByPattern(new Date(), "yyyy-MM-dd HH:mm:ss");
            System.out.println(dateStr2);
        }
    
        /**
         * 日期加减计算
         */
        @Test
        public void dateAdd() {
            String dateStr1 = DateUtils.dateAdd(25, "yyyy-MM-dd");
            System.out.println(dateStr1);
            String dateStr2 = DateUtils.dateAdd(-13, "yyyy-MM-dd HH:mm:ss");
            System.out.println(dateStr2);
        }
    
        /**
         * 获取当前日期所在区间
         */
        @Test
        public void getRecentMonthDateScope() {
            String dateStr[] = DateUtils.getRecentMonthDateScope(8, "yyyy-MM-dd");
            for (int i = 0; i < dateStr.length; i++) {
                System.out.println(dateStr[i]);
            }
        }
    
        /**
         * 按指定格式将日期转化为时间戳
         */
        @Test
        public void getTimestampByPattern() {
            Timestamp timestamp1 = DateUtils.getTimestampByPattern("2020-06-10 09:44:54", "");
            System.out.println(timestamp1);
            Timestamp timestamp2 = DateUtils.getTimestampByPattern("2020-06-10 09:44:54", "yyyy-MM-dd");
            System.out.println(timestamp2);
        }
    
        /**
         * 获取当前时间
         */
        @Test
        public void getDayDate() {
            String dayDate = DateUtils.getDayDate("yyyy-MM-dd");
            System.out.println(dayDate);
        }
    
        /**
         * 按指定格式将日期转化为时间戳
         */
        @Test
        public void getTimestamp() {
            Timestamp timestamp = DateUtils.getTimestamp("2020-06-10", "yyyy-MM-dd");
            System.out.println(timestamp);
        }
    
        /**
         * 按格式将字符串转化为日期
         */
        @Test
        public void getDateByPattern() {
            Date date1 = DateUtils.getDateByPattern("2020-06-10 10:15:20", "yyyy-MM-dd HH:mm:ss");
            System.out.println(date1);
            Date date2 = DateUtils.getDateByPattern("2020-06-10", "");
            System.out.println(date2);
        }
    
    }
  • 相关阅读:
    bootstrap 弹出框(Popover)插件 修改title等属性选项值
    dedecms 搬家流程
    jQuery ui 百叶窗blind方向设置
    css 优先级
    dedecms 标签
    dedecms 建站相关问题
    css 透明度使用
    css 边框使用
    css 阴影使用
    js 常用判断
  • 原文地址:https://www.cnblogs.com/alphajuns/p/13083424.html
Copyright © 2011-2022 走看看