zoukankan      html  css  js  c++  java
  • vo中对date格式的时间格式的处理,方便到前台展示

    之前一个同事的写法是这样的(绿色的):


    public static final String GENERAL_PATTERN_2 = "yyyy-MM-dd HH:mm:ss";

     其实没必要这样,在vo里面的set方法做个赋值:


    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

     这样不行,因为这里的createtime是string的,不能这样写(如果createtime属性是Date类型,给String类型的createtimeStr 属性赋值 可以这样写,createtimeStr这个字段值常用于前端展示~ 不用再在前端处理),写了访问报500错:

     那就这样写:

        public String getCreatetime() {
            try {
                return DateUtils.getStringDate(DateUtils.stringToDate(createtime, DateUtil.GENERAL_PATTERN_2));
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return createtime;
        }

     重要工具类DateUtils.java具体代码如下

      

     
    
    import java.math.BigDecimal;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;
    
    public class DateUtils {
    
        private static final int BIN_DIGITS = 12;
    
        public static final short ONE_MS = 1 << BIN_DIGITS;
    
        public static String getDatePattern() {
            return "yyyy-MM-dd";
        }
    
        public static String getTimePattern() {
            return "yyyy-MM-dd HH:mm:ss";
        }
    
        public static String getDatePattern8() {
            return "yyyyMMdd";
        }
    
        public static String getTimePattern14() {
            return "yyyyMMddHHmmss";
        }
    
        public static Date getDateTime(Date date, String format) throws ParseException {
            SimpleDateFormat df = new SimpleDateFormat(format);
            String strDate = df.format(date);
            Calendar cal = new GregorianCalendar();
            cal.setTime(stringToDate(strDate, format));
            return cal.getTime();
        }
    
        public static int getYear() {
            return Calendar.getInstance().get(Calendar.YEAR);
        }
    
        public static int getYear(Date date) {
            Calendar cal = new GregorianCalendar();
            cal.setTime(date);
            return cal.get(Calendar.YEAR);
        }
    
        public static int getMonth() {
            return Calendar.getInstance().get(Calendar.MONTH) + 1;
        }
    
        public static int getMonth(Date date) {
            Calendar cal = new GregorianCalendar();
            cal.setTime(date);
            return cal.get(Calendar.MONTH) + 1;
        }
    
        public static int getDayOfMonth() {
            return Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
        }
    
        public static int getDayOfMonth(Date date) {
            Calendar cal = new GregorianCalendar();
            cal.setTime(date);
            return cal.get(Calendar.DAY_OF_MONTH);
        }
    
        public static final Date stringToDate(String strDate, String format) throws ParseException {
            SimpleDateFormat df = null;
            Date date = null;
            df = new SimpleDateFormat(format);
    
            try {
                date = df.parse(strDate);
            } catch (ParseException pe) {
                throw new ParseException(pe.getMessage(), pe.getErrorOffset());
            }
            return (date);
        }
    
        public static Date stringToDate(String strDate) throws ParseException {
            Date aDate = null;
            try {
                aDate = stringToDate(strDate, getDatePattern());
            } catch (ParseException pe) {
                pe.printStackTrace();
                throw new ParseException(pe.getMessage(), pe.getErrorOffset());
            }
            return aDate;
        }
    
        public static final String dateToString(Date aDate, String format) {
            SimpleDateFormat df = null;
            String returnValue = "";
    
            if (aDate == null) {
                //
            } else {
                df = new SimpleDateFormat(format);
                returnValue = df.format(aDate);
            }
    
            return (returnValue);
        }
    
        public static final String getStringDate(Date date) {
            SimpleDateFormat format1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
            return format1.format(date.getTime());
        }
    
        public static final String dateToString(Date aDate) {
            return dateToString(aDate, getDatePattern());
        }
    
        public static final String timeToString(Date aDate) {
            return dateToString(aDate, getTimePattern());
        }
    
        public static Date getDate(Date aDate) throws ParseException {
            return getDateTime(aDate, getDatePattern());
        }
    
        public static Date getTime(Date aDate) throws ParseException {
            return getDateTime(aDate, getTimePattern());
        }
    
        public static long getDaysBetween(Date dtFrom, Date dtEnd) {
            long begin = dtFrom.getTime();
            long end = dtEnd.getTime();
            long inter = end - begin;
            if (inter < 0) {
                inter = inter * (-1);
            }
            long dateMillSec = 24 * 60 * 60 * 1000;
    
            long dateCnt = inter / dateMillSec;
    
            long remainder = inter % dateMillSec;
    
            if (remainder != 0) {
                dateCnt++;
            }
            return dateCnt;
        }
    
        public static long getMinsBetween(Date dtFrom, Date dtEnd) {
            long begin = dtFrom.getTime();
            long end = dtEnd.getTime();
            long inter = end - begin;
            return inter / 60000;
        }
    
        public static String getLastDateOfyearAndMonth(String yearAndMonth) throws Exception {
            String start = yearAndMonth + "01";
            Date startDate = DateUtils.stringToDate(start, "yyyyMMdd");
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(startDate);
            calendar.add(Calendar.MONTH, 1);
            calendar.add(Calendar.DAY_OF_MONTH, -1);
            String end = DateUtils.dateToString(calendar.getTime(), "yyyyMMdd");
            return end;
        }
    
        public static String getNextMonthString(String strDate, String format) throws ParseException {
            Date date = stringToDate(strDate, format);
            Calendar cal = new GregorianCalendar();
            cal.setTime(date);
            cal.add(Calendar.MONTH, 1);
            return dateToString(cal.getTime(), format);
        }
    
        /**
         * 获取上个月的最后一天
         * 
         * @param date
         * @return
         * @throws ParseException
         */
        public static Date getLastDayOfLastMonth(Date date) throws ParseException {
    
            String str_firstDay = dateToString(date, "yyyyMM") + "01";
            Date date_firstDay = stringToDate(str_firstDay, "yyyyMMdd");
            if (date_firstDay != null) {
                Calendar cal = Calendar.getInstance();
                cal.setTime(date_firstDay);
                cal.add(Calendar.DAY_OF_MONTH, -1);
                return cal.getTime();
            }
            return null;
        }
    
        /**
         * 获取上个月的最后一天
         * 
         * @param date
         * @return
         * @throws ParseException
         */
        public static String getLastDayOfLastMonth(Date date, String format) throws ParseException {
    
            return dateToString(getLastDayOfLastMonth(date), format);
        }
    
        /**
         * 获取传入时间所在月的最后一天
         * 
         * @param date
         * @return
         */
        public static int getLastDay(Date date) {
    
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.DAY_OF_MONTH, 1);
            calendar.add(Calendar.MONTH, 1);
            calendar.add(Calendar.DAY_OF_MONTH, -1);
    
            return calendar.get(Calendar.DAY_OF_MONTH);
    
        }
    
        /**
         * 获取指定时间下个月的第一天零时00:00:00
         * 
         * @param date
         * @return
         */
        public static Date getNextMonthFirstDay(Date date) {
    
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.add(Calendar.MONTH, 1);
            calendar.set(Calendar.DAY_OF_MONTH, 1);
            calendar.set(Calendar.HOUR_OF_DAY, 0);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.SECOND, 0);
            return calendar.getTime();
        }
    
        public static Date getMonthLastDay(Date date) {
    
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.add(Calendar.MONTH, 1);
            calendar.set(Calendar.DAY_OF_MONTH, 1);
            calendar.add(Calendar.DAY_OF_MONTH, -1);
            calendar.set(Calendar.HOUR_OF_DAY, 23);
            calendar.set(Calendar.MINUTE, 59);
            calendar.set(Calendar.SECOND, 59);
            return calendar.getTime();
        }
    
        /**
         * 获取一个月的开始时间
         * 
         * @param date
         * @return
         */
        public static Date getMonthFirstDay(Date date) {
    
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.set(Calendar.DAY_OF_MONTH, 1);
            calendar.set(Calendar.HOUR_OF_DAY, 0);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MILLISECOND, 0);
            return calendar.getTime();
        }
    
        /**
         * 当前时间是否在抽奖的有效时间内
         * 
         * @return
         */
        public static boolean raffleEffectiveTime() {
            boolean effective = false;
            try {
                Date begin = DateUtils.stringToDate("20130701000000", "yyyyMMddHHmmss");
                Date end = DateUtils.stringToDate("20131001000000", "yyyyMMddHHmmss");
                Date current = new Date();
    
                if (current.compareTo(begin) == 1 && current.compareTo(end) == -1) {
                    return true;
                }
            } catch (ParseException e) {
                e.printStackTrace();
            }
    
            return effective;
    
        }
    
        /**
         * 将源格式字符串日期转换成目标格式字符串日期
         * 
         * @param origStrDate 字符串日期
         * @param origFormat 源格式
         * @param destFormat 目标格式
         * @return
         * @throws ParseException
         */
        public static final String dateStrToString(String origStrDate, String origFormat, String destFormat) throws ParseException {
            Date origDate = stringToDate(origStrDate, origFormat);
            return dateToString(origDate, destFormat);
        }
    
        // 季度一年四季, 第一季度:2月-4月, 第二季度:5月-7月, 第三季度:8月-10月, 第四季度:11月-1月
        private static int getQuarterInMonth(int month, boolean isQuarterStart) {
            int months[] = { 1, 4, 7, 10 };
            if (!isQuarterStart) {
                months = new int[] { 3, 6, 9, 12 };
            }
            if (month >= 2 && month <= 4)
                return months[0];
            else if (month >= 5 && month <= 7)
                return months[1];
            else if (month >= 8 && month <= 10)
                return months[2];
            else
                return months[3];
        }
    
        // 获得本周一与当前日期相差的天数
        public static int getMondayPlus() {
            Calendar cd = Calendar.getInstance();
            int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK);
            if (dayOfWeek == 1) {
                return -6;
            } else {
                return 2 - dayOfWeek;
            }
        }
    
        // 获得当前周- 周一的日期
        public static Date getCurrentMonday() {
            Calendar cal = Calendar.getInstance();
            cal.setTime(getThisWeekMonday(new Date()));
            cal.add(Calendar.DATE, -7);
            return cal.getTime();
        }
    
        public static Date getThisWeekMonday(Date date) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            // 获得当前日期是一个星期的第几天
            int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
            if (1 == dayWeek) {
                cal.add(Calendar.DAY_OF_MONTH, -1);
            }
            // 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
            cal.setFirstDayOfWeek(Calendar.MONDAY);
            // 获得当前日期是一个星期的第几天
            int day = cal.get(Calendar.DAY_OF_WEEK);
            // 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
            cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
            return cal.getTime();
        }
    
        /**
         * 获得当月起始时间
         * 
         * @return
         */
        public static Date getStartMounth(Date date) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.set(Calendar.DAY_OF_MONTH, 1);
            calendar.set(Calendar.HOUR_OF_DAY, 0);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MILLISECOND, 0);
            return calendar.getTime();
        }
    
        /**
         * 获取当前季度 起始时间
         * 
         * @return
         */
        public static Date getStartQuarter(Date date) {
            SimpleDateFormat longSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            SimpleDateFormat shortSdf = new SimpleDateFormat("yyyy-MM-dd");
            Calendar c = Calendar.getInstance();
            int currentMonth = c.get(Calendar.MONTH) + 1;
            Date now = null;
            try {
                if (currentMonth >= 1 && currentMonth <= 3)
                    c.set(Calendar.MONTH, 0);
                else if (currentMonth >= 4 && currentMonth <= 6)
                    c.set(Calendar.MONTH, 3);
                else if (currentMonth >= 7 && currentMonth <= 9)
                    c.set(Calendar.MONTH, 4);
                else if (currentMonth >= 10 && currentMonth <= 12)
                    c.set(Calendar.MONTH, 9);
                c.set(Calendar.DATE, 1);
                now = longSdf.parse(shortSdf.format(c.getTime()) + " 00:00:00");
            } catch (Exception e) {
                e.printStackTrace();
            }
            return now;
        }
    
        /**
         * 获取当年起始时间
         */
        public static Date getStartYear(Date date) {
            Calendar currCal = Calendar.getInstance();
            int currentYear = currCal.get(Calendar.YEAR);
            return getYearFirst(currentYear);
        }
    
        /**
         * 获取某年第一天日期
         * 
         * @param year 年份
         * @return Date
         */
        public static Date getYearFirst(int year) {
            Calendar calendar = Calendar.getInstance();
            calendar.clear();
            calendar.set(Calendar.YEAR, year);
            Date currYearFirst = calendar.getTime();
            return currYearFirst;
        }
    
        public static void main(String[] args) throws ParseException {
    
    //         boolean effective=false;
    //            try {
    //                Date d=getMonthFirstDay(new Date());
    //                System.out.println(DateUtils.dateToString(d, "yyyyMMddHHmmsswww"));
    //            } catch (Exception e) {
    //                e.printStackTrace();
    //            }
            Date receiveTime = DateUtils.stringToDate("20131226", "yyyyMMdd");
    
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(receiveTime);
    
            int week = calendar.get(Calendar.DAY_OF_WEEK);
            if (week < Calendar.WEDNESDAY) {
                calendar.add(Calendar.DATE, -14);
            } else {
                calendar.add(Calendar.DATE, -7);
            }
            calendar.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
            Date effectiveStart = calendar.getTime();
            Date effectiveEnd = receiveTime;
    
            System.out.println(DateUtils.dateToString(effectiveStart, "yyyyMMddHHmmsswww"));
            System.out.println(DateUtils.dateToString(effectiveEnd, "yyyyMMddHHmmsswww"));
        }
    
        /**
         * 获取两个时间秒差数(带毫秒数)
         * 
         * @param dtFrom
         * @param dtEnd
         * @return
         */
        public static double getSecsBetweenD(Date dtFrom, Date dtEnd) {
            BigDecimal begin = new BigDecimal(dtFrom.getTime());
            BigDecimal end = new BigDecimal(dtEnd.getTime());
            BigDecimal inter = end.subtract(begin);
            return inter.divide(new BigDecimal("1000")).doubleValue();
        }
    
    }
  • 相关阅读:
    安卓apk反编译、修改、重新打包、签名全过程
    Win10解决无法访问其他机器共享的问题
    VMware Pro v14.1.1 官方版本及激活密钥
    java发送http的get/post请求(一)
    Git忽略规则及.gitignore规则不生效的解决办法
    RouterOS视频教程下载
    Socket心跳包异常检测的C语言实现,服务器与客户端代码案例
    去掉Word 标题编号变成黑框
    【分布式】分布式系统中的幂等性
    java反射(Reflection)的使用
  • 原文地址:https://www.cnblogs.com/tldxh/p/13392079.html
Copyright © 2011-2022 走看看