zoukankan      html  css  js  c++  java
  • 【Util】日期工具类总结

    1.Java版本

    package com.wisesoft.scenic.util;
    
    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 com.wisesoft.core.util.StringUtil;
    
    /**
     * @Title: CalendarUtil.java
     * @Package: com.wisesoft.scenic.util
     * @Description: TODO
     * @author: zlg
     * @date: 2017年6月15日 下午4:07:06
     * @version: V1.0
     */
    public class CalendarUtil {
    
        /**
         * 获取当月的第一天
         * 
         * @param ymStr
         * @author zlg
         * @date 2017年6月15日
         */
        public static String getFirstDayByYearMonth(String ymStr, String fmtStr,
                String toFmtStr) {
            if (!StringUtil.hasText(ymStr) || !StringUtil.hasText(fmtStr)) {
                return "";
            }
            Calendar cal = Calendar.getInstance();
            SimpleDateFormat fmt = new SimpleDateFormat(fmtStr);
            try {
                Date date = fmt.parse(ymStr);
                cal.setTime(date);
                cal.add(Calendar.MONTH, 0);
                cal.set(Calendar.DAY_OF_MONTH, 1);
                return new SimpleDateFormat(toFmtStr).format(cal.getTime());
            } catch (ParseException e) {
                LogUtil.exceptionLog.error("日期格式化错误:" + e.getMessage());
            }
            return "";
        }
    
        /**
         * 获取当月最后一天
         * 
         * @param ymStr
         * @author zlg
         * @date 2017年6月15日
         */
        public static String getLastDayByYearMonth(String ymStr, String fmtStr,
                String toFmtStr) {
            if (!StringUtil.hasText(ymStr) || !StringUtil.hasText(fmtStr)) {
                return "";
            }
            Calendar cal = Calendar.getInstance();
            SimpleDateFormat fmt = new SimpleDateFormat(fmtStr);
            try {
                Date date = fmt.parse(ymStr);
                cal.setTime(date);
                cal.add(Calendar.MONTH, 1);
                cal.set(Calendar.DAY_OF_MONTH, 0);
                return new SimpleDateFormat(toFmtStr).format(cal.getTime());
            } catch (ParseException e) {
                LogUtil.exceptionLog.error("日期格式化错误:" + e.getMessage());
            }
            return "";
        }
    
        /**
         * 获取上个月的第一天
         * 
         * @param ymStr
         * @author zlg
         * @date 2017年6月15日
         */
        public static String getLastMonthFirstDayByYearMonth(String ymStr,
                String fmtStr, String toFmtStr) {
            if (!StringUtil.hasText(ymStr) || !StringUtil.hasText(fmtStr)) {
                return "";
            }
            Calendar cal = Calendar.getInstance();
            SimpleDateFormat fmt = new SimpleDateFormat(fmtStr);
            try {
                Date date = fmt.parse(ymStr);
                cal.setTime(date);
                cal.add(Calendar.MONTH, -1);
                cal.set(Calendar.DAY_OF_MONTH, 1);
                return new SimpleDateFormat(toFmtStr).format(cal.getTime());
            } catch (ParseException e) {
                LogUtil.exceptionLog.error("日期格式化错误:" + e.getMessage());
            }
            return "";
        }
    
        /**
         * 获取上个月的最后一天
         * 
         * @param ymStr
         * @author zlg
         * @date 2017年6月15日
         */
        public static String getLastMonthLastDayByYearMonth(String ymStr,
                String fmtStr, String toFmtStr) {
            if (!StringUtil.hasText(ymStr) || !StringUtil.hasText(fmtStr)) {
                return "";
            }
            Calendar cal = Calendar.getInstance();
            SimpleDateFormat fmt = new SimpleDateFormat(fmtStr);
            try {
                Date date = fmt.parse(ymStr);
                cal.setTime(date);
                cal.set(Calendar.DAY_OF_MONTH, 1);
                cal.add(Calendar.DATE, -1);
                return new SimpleDateFormat(toFmtStr).format(cal.getTime());
            } catch (ParseException e) {
                LogUtil.exceptionLog.error("日期格式化错误:" + e.getMessage());
            }
            return "";
        }
    
        /**
         * 获取当前日期字符串
         * 
         * @param fmtStr
         *            return
         * @author zlg
         * @date 2017年6月15日
         */
        public static String getCurrentDateString(String fmtStr) {
            Calendar cal = Calendar.getInstance();
            SimpleDateFormat fmt = new SimpleDateFormat(fmtStr);
            return fmt.format(cal.getTime());
        }
    
        /**
         * 过去若干天的日期
         * 
         * @param past
         * @param fmtStr
         * @return
         * @author zlg
         * @date 2017年6月28日
         */
        public static String getPastDate(int past, String fmtStr) {
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR)
                    - past);
            Date today = calendar.getTime();
            SimpleDateFormat format = new SimpleDateFormat(fmtStr);
            String result = format.format(today);
            return result;
        }
    
        /**
         * 将来若干天的日期
         * 
         * @param past
         * @param fmtStr
         * @return
         * @author zlg
         * @date 2017年6月28日
         */
        public static String getFetureDate(int past, String fmtStr) {
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR)
                    + past);
            Date today = calendar.getTime();
            SimpleDateFormat format = new SimpleDateFormat(fmtStr);
            String result = format.format(today);
            return result;
        }
    
        /**
         * 补全12个月份的条形统计图:单条数据
         * 
         * @param xdata
         * @param ydata
         * @return
         * @author zlg
         * @date 2017年6月28日
         */
        public static Map<String, String[]> getYearAllMonthLineData(String[] xdata,
                String[] ydata) {
            String[] newXdata = new String[12];
            String[] newYdata = new String[12];
            if (null != xdata && xdata.length >= 1 && null != ydata
                    && ydata.length >= 1) {
                String year = xdata[0].split("-")[0];
                for (int i = 0; i < 12; i++) {
                    if (i < 9) {
                        newXdata[i] = year + "-0" + (i + 1);
                    } else {
                        newXdata[i] = year + "-" + (i + 1);
                    }
                    for (int j = 0; j < xdata.length; j++) {
                        if (newXdata[i].equals(xdata[j])) {
                            newYdata[i] = ydata[j];
                            break;
                        }
                    }
                    if (!StringUtil.hasText(newYdata[i])) {
                        newYdata[i] = "0";
                    }
                }
            } else {
                for (int i = 0; i < 12; i++) {
                    newXdata[i] = "";
                    newYdata[i] = "";
                }
            }
            Map<String, String[]> map = new HashMap<String, String[]>(2);
            map.put("xdata", newXdata);
            map.put("ydata", newYdata);
            return map;
        }
    
        /**
         * 格式化
         * 
         * @param date
         * @param fmtStr
         * @return
         * @author zlg
         * @date 2017年6月30日
         */
        public static String getByFormartStr(String date, String fmtStr,
                String targetFmtStr) {
            if (!StringUtil.hasText(date)) {
                return "";
            }
            SimpleDateFormat format = new SimpleDateFormat(fmtStr);
            Date ds;
            try {
                ds = format.parse(date);
                SimpleDateFormat tgFmt = new SimpleDateFormat(targetFmtStr);
                return tgFmt.format(ds);
            } catch (ParseException e) {
                LogUtil.exceptionLog.error("日期格式化错误:" + e.getMessage());
            }
            return "";
        }
    
        /**
         * 字符串日期转Date
         * 
         * @param date
         * @param fmtStr
         * @return
         * @author zlg
         * @date 2017年7月3日
         */
        public static Date getDateByStringDate(String date, String fmtStr) {
            if (!StringUtil.hasText(date)) {
                return null;
            }
            SimpleDateFormat sdf = new SimpleDateFormat(fmtStr);
            try {
                Date rs = sdf.parse(date);
                return rs;
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }
    
        /**
         * 判断日期是否在某个日期范围内
         * 
         * @param inputDate
         * @param start
         * @param end
         * @param fmtStr
         * @return
         * @author zlg
         * @date 2017年6月30日
         */
        public static boolean checkDateIsBetweenTwoDate(String inputDate,
                String start, String end, String fmtStr) {
            SimpleDateFormat sf = new SimpleDateFormat(fmtStr);
            Date input;
            Date sd;
            Date ed;
            try {
                input = sf.parse(inputDate);
                sd = sf.parse(start);
                ed = sf.parse(end);
                if (input.before(ed) && input.after(sd)) {
                    return true;
                }
            } catch (ParseException e) {
                LogUtil.exceptionLog.error("日期格式化错误:" + e.getMessage());
                return false;
            }
            return false;
        }
    
        public static String getDateAfter(String d, String fmtStr, int day,
                String targetFmtStr) {
            Calendar now = Calendar.getInstance();
            SimpleDateFormat srcFmt = new SimpleDateFormat(fmtStr);
            Date date;
            try {
                date = srcFmt.parse(d);
                now.setTime(date);
                now.set(Calendar.DATE, now.get(Calendar.DATE) + day);
                SimpleDateFormat sdf = new SimpleDateFormat(targetFmtStr);
                return sdf.format(now.getTime());
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return "";
        }
    
        public static int daysBetween(String d1, String d2, String fmtStr) {
            SimpleDateFormat fmt = new SimpleDateFormat(fmtStr);
            Calendar cal = Calendar.getInstance();
            Date date1;
            Date date2;
            try {
                date1 = fmt.parse(d1);
                cal.setTime(date1);
                long time1 = cal.getTimeInMillis();
                date2 = fmt.parse(d2);
                cal.setTime(date2);
                long time2 = cal.getTimeInMillis();
                long between_days = (time2 - time1) / (1000 * 3600 * 24);
                
                return Integer.parseInt(String.valueOf(between_days));
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return 0;
        }
    
    }

    2.JS版本

    var DateUtil = {
            getLastMonthDay:function getFirstAndLastMonthDay(year, month, split){    
                var  day = new Date(year,month,0);   
                var lastdate = year + split + month + split + day.getDate();//获取当月最后一天日期     
                return lastdate;  
            },
            getFirstMonthDay:function getFirstAndLastMonthDay(year, month, split){    
                var   firstdate = year + split + month + split + '01';  
                return firstdate;  
            }
    };

    使用方法:

    var datas = "2017-06";

    var date = new Date(datas);

    // month 从0-11
    var first = DateUtil.getFirstMonthDay(date.getFullYear(), date.getMonth(), "-");
    var last = DateUtil.getLastMonthDay(date.getFullYear(), date.getMonth(), "-");
    $("#sbillTime").empty().html(first + "至" + last);
    $("#sbillDate").empty().html(DateUtil.getFirstMonthDay(date.getFullYear(), date.getMonth() + 1, "-"));

  • 相关阅读:
    1006. 求和游戏
    1004. 西西弗斯式的命运
    1024. 排序
    1005. 数独
    kafka的基本操作
    kafka安装
    spring boot 使用redis 及redis工具类
    ArrayDeque类的使用详解
    设计模式随笔之——工厂方法模式
    转:Android随笔之——使用Root权限实现后台模拟全局按键、触屏事件方法(类似按键精灵)
  • 原文地址:https://www.cnblogs.com/flydkPocketMagic/p/7018471.html
Copyright © 2011-2022 走看看