package cn.com.autohome.tuan.tzapp.util.utils; import org.apache.commons.lang.StringUtils; import java.text.*; import java.util.*; public final class DateHelper { public static final String YYYYMMDD = "yyyy-MM-dd"; public static final String YYYYMMDDHHMMSS ="yyyy-MM-dd HH:mm:ss"; public static final String MMDD = "MM月dd日"; private DateHelper() { //can't instance } /** * 获取传入日期的当前月的第一天 * @return date */ public static Date getFirstDay(){ //获取系统当前日期 Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MONTH,0); calendar.set(Calendar.DAY_OF_MONTH,1); return calendar.getTime(); } /** * 获取系统时间 */ public static Date getSystemDate(){ Calendar cal = Calendar.getInstance(); return cal.getTime(); } /** * 获取当前系统时间对应星期内的星期一的日期 */ public static Date getMondayDate(Date dt){ Date tmpDt = dt; if (tmpDt == null){ tmpDt = getSystemDate(); } Calendar cal = Calendar.getInstance(); cal.setTime(tmpDt); int w = cal.get(Calendar.DAY_OF_WEEK) - 1; if (w < 0) w = 0; Date result; switch (w){ case 0: cal.add(Calendar.DAY_OF_MONTH,-6); result = cal.getTime(); break; case 1: result = tmpDt; break; case 2: cal.add(Calendar.DAY_OF_MONTH,-1); result = cal.getTime(); break; case 3: cal.add(Calendar.DAY_OF_MONTH,-2); result = cal.getTime(); break; case 4: cal.add(Calendar.DAY_OF_MONTH,-3); result = cal.getTime(); break; case 5: cal.add(Calendar.DAY_OF_MONTH,-4); result = cal.getTime(); break; case 6: cal.add(Calendar.DAY_OF_MONTH,-5); result = cal.getTime(); break; default: result = tmpDt; break; } return result; } /** * 获取当前时间的上一周的结束时间 * @param dt */ public static Date getLastModayEndDate(Date dt){ Date tmpDt = dt; if(tmpDt == null){ tmpDt = getSystemDate(); } Date monday = getMondayDate(tmpDt); Calendar cal = Calendar.getInstance(); cal.setTime(monday); cal.add(Calendar.DAY_OF_MONTH,-1); return cal.getTime(); } /** *获取当前时间的上一周的开始时间 * @param dt */ public static Date getLastMondayStartDate(Date dt){ Date tmpDt = dt; if(tmpDt == null){ tmpDt = getSystemDate(); } Date monday = getMondayDate(tmpDt); Calendar cal = Calendar.getInstance(); cal.setTime(monday); cal.add(Calendar.DAY_OF_MONTH,-1); Date sunday = cal.getTime(); return getMondayDate(sunday); } /** * 把日期类型按照指定的格式转换成字符串 * @param dt * @param pattern * @return string */ public static String toString(Date dt,String pattern){ SimpleDateFormat sdf = new SimpleDateFormat(pattern, Locale.CHINA); if(dt == null){ return null; } return sdf.format(dt); } /** * 获取当前日期是本周的周几 * @param dt * @return 周几 */ public static int weekDay(Date dt){ Calendar cal = Calendar.getInstance(); cal.setTime(dt); int w = cal.get(Calendar.DAY_OF_WEEK) - 1; if (w < 0) w = 0; return w; } /** * 获取当前月的最近六个月 * return 最近的六个月 */ public static Map<String,String> getYearMonth(){ //时间格式 SimpleDateFormat matter = new SimpleDateFormat("yyyy年MM月",Locale.CHINA); Map<String,String> map = new HashMap<String,String>(); Calendar cal = Calendar.getInstance(); //获取当前系统时间 Date dt = cal.getTime(); map.put("time01",getYearMonthByParam(dt,-1)); map.put("time02",getYearMonthByParam(dt,-2)); map.put("time03",getYearMonthByParam(dt,-3)); map.put("time04",getYearMonthByParam(dt,-4)); map.put("time05",getYearMonthByParam(dt,-5)); return map; } /** * 根据传入的日期获取年月 * @param dt * @param number * @return yyyy年MM月 */ public static String getYearMonthByParam(Date dt,int number){ SimpleDateFormat matter = new SimpleDateFormat("yyyy年MM月",Locale.CHINA); if(dt == null){ return null; } Date time = dt; Calendar cal = Calendar.getInstance(); cal.setTime(time); cal.add(Calendar.MONTH,number); return matter.format(cal.getTime()); } /** * 返回当前月份 * @return 月份 */ public static int getMonth(){ Calendar cal = Calendar.getInstance(); return cal.get(Calendar.MONTH)+1; } /** * 返回某月份 * @return 月份 */ public static int getMonth(Date dt){ Calendar cal = Calendar.getInstance(); cal.setTime(dt); return cal.get(Calendar.MONTH)+1; } /** * 转换日期格式的String * @return */ public static String formattDateStr(String date){ String transDate = null; if(StringUtils.isEmpty(date)){ return null; } transDate = date; return transDate.replace("年","-").replace("月","-")+"01 00:00:00"; } /** * String日期转换成指定格式的日期格式 * @param str * 待转换的日期 * @param formatter * 转换格式 * @return dt */ public static Date toDateByFormatter(String str,String formatter){ String fmt = formatter; if(StringUtils.isEmpty(fmt)){ fmt ="yyyy-MM-dd"; } DateFormat sdf = new SimpleDateFormat(fmt,Locale.CHINA); Date dt = null; try{ dt = sdf.parse(str); }catch (ParseException e){ e.printStackTrace(); } return dt; } /** * 得到本月的第一天 * @return */ public static String getMonthFirstDay() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DAY_OF_MONTH, calendar .getActualMinimum(Calendar.DAY_OF_MONTH)); return toString(calendar.getTime(), YYYYMMDD); } /** * 得到本月的最后一天 * * @return */ public static String getMonthLastDay() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DAY_OF_MONTH, calendar .getActualMaximum(Calendar.DAY_OF_MONTH)); return toString(calendar.getTime(), YYYYMMDD); } /** * * @param year * int 年份 * @param month * int 月份 * * @return int 某年某月的最后一天 */ public static String getLastDayOfMonth(int year, int month) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, year); cal.set(Calendar.MONTH, month); cal.set(Calendar.DATE, 0); return toString(cal.getTime(),YYYYMMDD); } /** * 获取当前的日期 * @return */ public static String getNowDate(String pattern){ if(StringUtils.isBlank(pattern)){ return ""; } Date dt = DateHelper.getSystemDate(); SimpleDateFormat sdf = new SimpleDateFormat(pattern,Locale.CHINA); return sdf.format(dt); } public static Date clearHourMiniuteSecondZero(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); 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(); } // 获取当前时间所在周的开始日期 public static Date getFirstDayOfWeek(Date date) { Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY); c.setTime(date); c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); return c.getTime(); } //取得当前时间的,按照num数的结束时间 public static Date getLastDayOfWeek(Date date,int num) { Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY); c.setTime(date); c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + num); return c.getTime(); } /** * 得到某年某周的第一天 * * @param year * @param week * @return */ public static Date getFirstDayOfWeek(int year,int month, int week) { int tmpWeek = week-1; int tmpMonth = month -1; Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, year); calendar.set(Calendar.MONTH, tmpMonth); calendar.set(Calendar.DATE, 1); Calendar cal = (Calendar) calendar.clone(); cal.add(Calendar.DATE, tmpWeek * 7); return getFirstDayOfWeek(cal.getTime()); } /** * 得到某年某周的最后一天 * * @param year * @param month * @param week * @return */ public static Date getLastDayOfWeek(int year,int month, int week,int num) { int tmpWeek = week-1; int tmpMonth = month -1; Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, year); calendar.set(Calendar.MONTH,tmpMonth); calendar.set(Calendar.DATE, 1); Calendar cal = (Calendar) calendar.clone(); cal.add(Calendar.DATE, tmpWeek * 7); return getLastDayOfWeek(cal.getTime(),num); } }
java常用日期处理函数
最新推荐文章于 2023-09-25 15:13:22 发布