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