【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, "-"));

原文地址:https://www.cnblogs.com/flydkPocketMagic/p/7018471.html