常用日期处理方法工具类
此文章是基于 搭建Jquery+SpringMVC+Spring+Hibernate+MySQL平台
功能:日期的获取与转换
DateUtil.java
package com.ims.common; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.log4j.Logger; /** * 常用日期处理方法工具类 */ public class DateUtil { private static Logger logger = Logger.getLogger(DateUtil.class); /** * 取得当前日期字符串 * @return 格式:yyyy-MM-dd */ public static String getCurrDate() { return DateFormatUtils.format(new Date(), "yyyy-MM-dd"); } /** * 取得当前时间字符串 * @return 格式:yyyy-MM-dd HH:mm:ss */ public static String getCurrTime() { return DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"); } /** * 取得离现在n天的时间字符串 * @param afterDay 可往前(负数)、往后(正数)n天 * @return 格式:yyyy-MM-dd HH:mm:ss */ public static String getAfterTime(int afterDay){ Calendar calendar = new GregorianCalendar(); calendar.setTime(new Date()); calendar.add(Calendar.DATE,afterDay); return dateToString(calendar.getTime()); } /** * 取得当前年份 * @return 格式:yyyy */ public static String getCurrYear() { return DateFormatUtils.format(System.currentTimeMillis(), "yyyy"); } /** * 将字符串List转化为字符串,以分隔符间隔. * @param list 需要处理的List. * @param separator 分隔符. * @return */ public static String toString(List<String> list, String separator) { StringBuffer stringBuffer = new StringBuffer(); for (String str : list) { stringBuffer.append(separator + str); } stringBuffer.deleteCharAt(0); return stringBuffer.toString(); } /** * 日期date转换为字符串 * @param date 日期 * @return 格式:yyyy-MM-dd HH:mm:ss */ public static String dateToString(Date date) { if (date != null) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sdf.format(date); } else { return null; } } /** * 日期字符串转换为日期date * @param str 日期字符串 * @return */ public static Date stringToDate(String str) { try { if (str != null) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sdf.parse(str); } } catch (ParseException e) { logger.error("日期转换出错"); } return null; } /** * 得到月份月初 * @param str 格式:yyyy-MM * @return 格式:yyyy-MM-dd HH:mm:ss */ public static String getMonthStart(String str){ return str+"-01 00:00:00"; } /** * 得到月份月底 * @param str 格式:yyyy-MM * @return 格式:yyyy-MM-dd HH:mm:ss */ public static String getMonthEnd(String str) { String strZ = null; int x = Integer.valueOf(str.split("-")[0]); int y = Integer.valueOf(str.split("-")[1]); boolean leap = false; if (y == 1 || y == 3 || y == 5 || y == 7 || y == 8 || y == 10 || y == 12) { strZ ="31"; } if (y == 4 || y == 6 || y == 9 || y == 11) { strZ ="30"; } if (y == 2) { leap = leapYear(x); if (leap) { strZ ="29"; }else { strZ ="28"; } } return str+"-"+strZ+" 23:59:59"; } /** * 得到当前月份月初 * @return 格式:yyyy-MM-dd (eg: 2007-12-01) */ public static String thisMonthStart() { String strY = null; int x = Calendar.getInstance().get(Calendar.YEAR); int y = Calendar.getInstance().get(Calendar.MONTH) + 1; strY = y >= 10 ? String.valueOf(y) : ("0"+ y);return x +"-"+ strY +"-01"; } /** * 得到当前月份月底 * @return 格式:yyyy-MM-dd (eg: 2007-12-31) */ public static String thisMonthEnd() { String strY = null; String strZ = null; boolean leap = false; int x = Calendar.getInstance().get(Calendar.YEAR); int y = Calendar.getInstance().get(Calendar.MONTH) + 1; if (y == 1 || y == 3 || y == 5 || y == 7 || y == 8 || y == 10 || y == 12) { strZ ="31"; } if (y == 4 || y == 6 || y == 9 || y == 11) { strZ ="30"; } if (y == 2) { leap = leapYear(x); if (leap) { strZ ="29"; }else { strZ ="28"; } } strY = y >= 10 ? String.valueOf(y) : ("0"+ y); return x +"-"+ strY +"-"+ strZ; } /** * 判断输入年份是否为闰年 * @param year 年份 * @return */ public static boolean leapYear(int year) { boolean leap; if (year % 4 == 0) { if (year % 100 == 0) { if (year % 400 == 0){ leap = true; }else{ leap = false; } }else{ leap = true; } }else{ leap = false; } return leap; } /** * 取得开始与结束时间字符串 * @param date 日期对象,如:(2005-12-01到2005-12-30)或者(2005-12-01) * @return 开始时间key:startDate,value:如2005-12-01 00:00:00 * 结束时间key:endDate,value:如2005-12-30 23:59:59 */ public static Map<String, String> getStartEndDate(Object date){ Map<String, String> result = new HashMap<String, String>(); if(date!=null && StringUtils.isNotBlank(date.toString())){ String dateStr = date.toString(); if(dateStr.indexOf("到")!=-1){ if(StringUtils.isNotBlank(dateStr.substring(0, dateStr.indexOf("到")))){ result.put("startDate", dateStr.substring(0, dateStr.indexOf("到")).trim()+" 00:00:00"); } if(StringUtils.isNotBlank(dateStr.substring(dateStr.indexOf("到")+1, dateStr.length()))){ result.put("endDate", dateStr.substring(dateStr.indexOf("到")+1, dateStr.length()).trim()+" 23:59:59"); } }else{ result.put("startDate", dateStr.trim()+" 00:00:00"); result.put("endDate", dateStr.trim()+" 23:59:59"); } } return result; } }